是新來的春天引導& JPA到層基於Spring DAO JPA ...正確的方法使用Spring框架啓動
比方說,我有映射到其在數據庫中加入兩個表的兩個實體。
學生-1 ------ <道菜的
而且,讓假定數據庫已創建並填充。
這描述了一個學生有很多課程...
我的學生實體:
@Entity
public class Student {
@OneToMany(mappedBy="student")
private List<Courses> courses;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "Student_Id")
private long studentId;
@Column(name = "Student_Name")
private String studentName;
protected Student() { }
// Getters & Setters
}
我的課程實體:
@Entity
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "Course_Id")
private long courseId;
@Id
@Column(name = "Student_Id")
private long studentId;
@ManyToOne
@PrimaryKeyJoinColumn(name="Student_Id", referencedColumnName="Student_Id")
private Student student;
@Column(name = "Course_Name")
private String courseName;
// Getters & Setters
}
在春天啓動的教程指導,它闡釋瞭如何擴展CrudRepository接口,但它不指定如何設置基於Spring的DAO,其中包含使用HQL和Entit的自定義查找程序方法yManager裏面。
下面的DAO和DaoImpl是否正確?
public interface CourseDao {
List<Course> findCoursesByStudentName(String studentName);
}
@Repository
public class CourseDaoImpl implements CourseDao {
@PersistenceContext
EntityManager em;
public List<Course> findCoursesByStudentName(String studentName) {
String sql = "select c.courseName" +
"from Course c, Student s " +
"where c.course_id = s.student_id " +
"and s.studentName = :studentName ";
Query query = em.createQuery(sql);
query.setParameter("studentName", studentName);
return query.getResultList();
}
}
然後在客戶端的代碼,例如,在主類:
public class Application {
@Autowired
CustomerDao dao;
public static void main (String args []) {
List<Course> courses = dao.findCoursesByStudentName("John");
}
}
這是標準的方式來使用HQL春天的DAO裏面?我已經看到了DAO類的impl(例如CustomerDAOImpl)前綴的@Transactional註釋示例?
請讓我知道如果這是寫入方式來構建我的Spring Boot應用程序,或者我應該只擴展/添加到CrudRepository?
如果有人可以糾正我的例子,並指向我使用加入的實體談論HQL的URL,我將非常感激。
Spring Boot指南沒有描述連接或DAO - 我只需要學習如何正確地創建查找方法來模擬返回列表或數據結構的select語句。
感謝您抽空閱讀本文時...
shazin,謝謝你的迴應...這是做HQL的標準方式嗎?你正在選擇學生而不是加入?我很困惑...另外,爲什麼readOnly = true?你是什麼意思定義JpaTransactionManager正確?你如何在Spring Boot中做到這一點?爲什麼不使用CrudRespository?我正在尋求的是做事情的標準方式......感謝您的幫助。 – 2015-04-01 01:37:43
此用戶類/對象ref在何處定義?你是指學生嗎? – 2015-04-01 17:40:43