Hibernate的Annotation版Hello world实例

下面我将为你详细讲解“Hibernate的Annotation版Hello world实例”的完整攻略:

1. 构建项目

首先,我们需要构建一个Maven项目,在项目的pom.xml文件中添加相关依赖:

<dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.4.28.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.4.28.Final</version>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.200</version>
    </dependency>
</dependencies>

2. 创建Java实体类

创建一个Java实体类Student,并添加注解@Entity标识它是一个实体类,@Table指定表名,@Id标识主键,@GeneratedValue指定主键生成策略,@Column指定属性类型和列名。

@Entity
@Table(name = "student")
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

3. 配置数据源和Hibernate的注解配置文件

src/main/resources目录下创建一个名为application.properties的文件,配置数据源和Hibernate的注解配置信息:

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=

spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto=create

hibernate.format_sql=true
hibernate.hbm2ddl.auto=create

4. 创建DAO层代码

需要创建一个接口StudentDao,定义CRUD操作的接口方法。

public interface StudentDao {
    void save(Student student);

    List<Student> getAll();
}

并创建一个实现类StudentDaoImpl,使用@Repository注解标识它是一个DAO层的实现类,使用@PersistenceContext注解注入EntityManager对象。

@Repository
public class StudentDaoImpl implements StudentDao {
    @PersistenceContext
    private EntityManager entityManager;

    @Override
    public void save(Student student) {
        entityManager.persist(student);
    }

    @Override
    public List<Student> getAll() {
        TypedQuery<Student> query = entityManager.createQuery("select s from Student s", Student.class);
        return query.getResultList();
    }
}

5. 编写测试用例

创建一个测试类StudentDaoImplTest,测试学生的新增和查询。

@RunWith(SpringRunner.class)
@SpringBootTest
public class StudentDaoImplTest {
    @Autowired
    private StudentDao studentDao;

    @Test
    public void testSave() {
        Student student = new Student();
        student.setName("张三");
        student.setAge(18);
        studentDao.save(student);
        Assert.assertTrue(student.getId() > 0);
    }

    @Test
    public void testGetAll() {
        List<Student> studentList = studentDao.getAll();
        Assert.assertFalse(studentList.isEmpty());
    }
}

6. 运行测试用例

最后运行测试用例,测试结果应该如下:

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.example.demo.dao.StudentDaoImplTest
Hibernate: 

    create table student (
       id integer generated by default as identity (start with 1),
        age integer not null,
        name varchar(255),
        primary key (id)
    )
Hibernate: 
    insert 
    into
        student
        (age, name, id) 
    values
        (?, ?, ?)
Hibernate: 
    select
        student0_.id as id1_0_,
        student0_.age as age2_0_,
        student0_.name as name3_0_ 
    from
        student student0_
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.194 s - in com.example.demo.dao.StudentDaoImplTest
[INFO]

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Hibernate的Annotation版Hello world实例 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java黑科技之通过Google Java Style 文件配置IDEA和Ecplise代码风格

    下面我来详细讲解如何通过Google Java Style配置IDEA和Eclipse的代码风格。 一、Google Java Style 及其重要性 Google Java Style是一种Java代码风格规范,它是Google公司内部使用的标准化代码风格规范。通过使用Google Java Style,可以让代码更加规范化、易读、易维护。 Google …

    Java 2023年5月20日
    00
  • Spring超详细讲解面向对象到面向切面

    以下是一份“Spring超详细讲解面向对象到面向切面”的完整攻略: 什么是面向对象编程 面向对象编程(OOP)是一种程序设计范式,其中对象可以相互交互以实现逻辑。在Java编程环境中,面向对象编程可以帮助程序员更好地重复利用和组织代码,使得代码更易于维护和扩展。 什么是Spring框架 Spring框架是一种轻量级的、开源的、基于Java的应用框架,旨在简化…

    Java 2023年5月19日
    00
  • java启动参数之谜的排查过程

    以下是Java启动参数排查过程的攻略。 总览 Java应用程序的启动参数是决定应用程序行为的一些选项。这些参数可以设置Java虚拟机的行为,也可以设置应用程序的行为。当应用程序行为和预期不符时,启动参数可能就成为排查问题的关键。 下面是解决Java启动参数排查问题的一些步骤。 第一步:查看启动参数 查看启动参数是排查Java启动参数问题的第一步。可以使用以下…

    Java 2023年5月20日
    00
  • Spring Boot + Kotlin整合MyBatis的方法教程

    接下来我将详细讲解“Spring Boot + Kotlin整合MyBatis的方法教程”的完整攻略,过程中包含两条示例说明。 1. 环境准备 在开始整合之前,我们需要先准备好以下环境: JDK 1.8+ Kotlin 1.3+ Spring Boot 2.0+ MyBatis 3.4+ 2. 添加依赖 在开始整合之前,我们需要先在 build.gradle…

    Java 2023年6月1日
    00
  • Spring多线程通过@Scheduled实现定时任务

    下面就来详细讲解“Spring多线程通过@Scheduled实现定时任务”的完整攻略。 什么是@Scheduled @Scheduled 是一种方便的 Spring 内置注解,可以让你在应用程序中创建定时任务。使用@Scheduled 注解,你可以指定一个固定的延迟、一个固定的间隔(以秒为单位)或一个 cron 表达式(更完整的定时任务调度方法)来触发注解的…

    Java 2023年5月19日
    00
  • 使用Java的Spring框架编写第一个程序Hellow world

    使用Java的Spring框架编写第一个程序Hello world的完整攻略如下: 1. 准备工作 在开始编写Spring程序之前,我们需要做一些准备工作。 1.1 安装JDK和Maven 在开发Spring程序之前,需要安装JDK和Maven。 1.1.1 安装JDK 首先,我们需要安装JDK。到Oracle官网上下载安装包,安装完成后配置环境变量。 1.…

    Java 2023年5月19日
    00
  • Java 调整格式日志输出

    本文将详细讲解如何在Java应用中调整格式日志输出,包括常见的两种方法:使用java.util.logging和使用log4j2。下面我们将结合代码示例来进行讲解。 使用java.util.logging实现格式日志输出 通常情况下,Java应用程序会默认使用java.util.logging作为日志输出框架。如果你也是使用这个框架的开发者,可以按照以下步骤…

    Java 2023年5月26日
    00
  • Ajax读取数据之分页显示篇实现代码

    Ajax是一种在Web应用程序中创建异步请求的技术。本篇攻略将演示如何使用Ajax读取数据并分页显示。 实现步骤 1.后端:编写接口,提供数据。 2.前端:使用Ajax从后端读取数据并展示。 3.前端:实现分页逻辑。 下面是这些步骤的详细说明。 编写接口 我们需要提供一个接口来获取数据。可以使用PHP、Java或任何其他后端编程语言编写接口。下面是一个使用P…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部