当前位置: 首页 > 知识库问答 >
问题:

使用Spring Boot框架构建基于Spring JPA的DAO的正确方法

贺博厚
2023-03-14

另外,假设数据库已经创建和填充。

这描绘了一个学生有多门课程...

我的学生实体:

@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

}
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");
    }   
 }

Spring Boot指南没有描述联接或DAOS-我只需要学习如何正确地创建finder方法,这些方法模拟select语句,返回列表或数据结构。

感谢你花时间阅读这篇文章...

共有1个答案

锺离辰沛
2023-03-14

如果我正确理解你的问题,你有两个问题:

  1. 如何创建DAO和DAOImpl?
  2. 将事务注释放在哪里?

关于第一个问题,我想指出,这是关于spring-data-jpa使用Hibernate作为JPA提供者的问题,而不是spring-boot

@Repository
public interface StudentRepository extends CrudRepository<Student, Long> {

    List<Student> findByStudentName(String studentName);

}
@Autowired
StudentRepository studentRepo; 
@Repository
public interface @CourseRepository extends CrudRepository<Course, Long> {

    @Query("select c.courseName from Course c, Student s where c.course_id = s.student_id and s.studentName = :studentName")
    public List<Course> findCoursesByStudentName(String studentName);

}
 类似资料:
  • 本文向大家介绍基于Spring框架的Shiro配置方法,包括了基于Spring框架的Shiro配置方法的使用技巧和注意事项,需要的朋友参考一下 一、在web.xml中添加shiro过滤器 二、在Spring的applicationContext.xml中添加shiro配置 1、添加shiroFilter定义 2、添加securityManager定义 3、添加realm定义 三、实现MyRealm

  • 问题内容: 我在DAO类中使用Spring MVC 。在这里困惑从何处开始事务,它应该在服务层还是DAO层? 我的视图与服务层交互。DAO已注入服务。 在DAO服务层体系结构中将Spring MVC与Hibernate一起使用的正确方法是什么? 问题答案: 恕我直言,交易应转到服务层。通常,一项业务交易包含多个查询和更新。如果仅放置在DAO层上,则每个查询和更新将在单独的事务中运行,这实际上违反了

  • (1). 创建数据库 shopdb 进入MySQL数据库中,创建一个数据库名为:shopdb 将上节《项目的数据库设计》中准备好的shopdb.sql脚本导入到shopdb数据库中 (2). 创建项目 myobject 框架和应用 myamdin、web和common。 # 创建项目框架 `myobject` $ django-admin startproject myobject

  • 本文向大家介绍Android XUtils3框架的基本使用方法(二),包括了Android XUtils3框架的基本使用方法(二)的使用技巧和注意事项,需要的朋友参考一下 上一篇Android中XUtils3框架使用方法详解(一)文章,主要介绍了XUtil3的注解模块,网络模块,图片加载模块,今天给大家带来数据库模块的讲解,现在主流的ORM框架很多,比如OrmLite,GreenDao,Activ

  • 对于,使用C 11基于范围的的正确方法是什么? 应该使用什么语法<代码>用于(自动元素:容器),或