私はhibernate-spring tirpleが初めてです..
私は単純なレジスタブックをコーディングしようとしています..私は次のコードを持っています:
学生.java
@Entity(name = "STUDENTS")
@NamedQueries({
@NamedQuery(name = "getAllStudent", query = "SELECT k FROM STUDENTS k ORDER BY k.id DESC"),
@NamedQuery(name = "findByName", query = "SELECT k FROM STUDENTS k WHERE k.name LIKE :name")
})
public class Student {
@Column(name = "STUDENTNO", nullable = false)
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "NAME", nullable = false)
private String name;
@Column(name = "SURNAME")
private String surname;
@Column(name = "AGE")
private String age;
// GET ve SET metods
StduentDAO.java
@Repository
@Transactional(readOnly = true)
public class StudentDAO implements IStudentDAO {
@PersistenceContext
EntityManager em;
@Override
public void deleteStudent(Student student) {
Student temp = em.getReference(Student.class, student.getId());
em.remove(temp);
System.out.println("### getting out from studentDAO deleteStudent method ###")
StudentController.java
@Component
@Scope(value = "request")
public class StudentController {
@Autowired
IStudentDAO studentDAO;
List<Student> allStudentList = new ArrayList();
Student student = new Student();
@PostConstruct
private void loadStudents() {
allStudentList = studentDAO.allStudent();
public void deleteStudent() {
studentDAO.deleteStudent(student);
System.out.println("### getting out from StudentController deleteStudent method ### ");
}
deleteStudent()
コードを実行すると、次のようになります。
「### StudentDAO から抜け出す deleteStudent メソッド ###」
"### StudentController deleteStudent メソッドから抜け出す ### "
これらは出力に表示されますが、データベースから何も削除されていません..少し検索したところ、「すべてのエンティティマネージャーのメソッドが独自のセッションを開く」ことがわかりました。そのため、StudentDAO の deleteStudent メソッドを上記のように記述する必要があります。
私はtransacitonについて何かが欠けていると思いますが、まだ認識していません..
これについてどうすればいいですか?
ありがとう..