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日

相关文章

  • Spring Boot 2.0快速构建服务组件全步骤

    Spring Boot是一个流行的Java框架,可以帮助开发人员更加高效地构建和部署应用程序。在本文中,我们将详细讲解如何使用Spring Boot 2.0快速构建服务组件的全步骤,并提供两个示例来演示如何使用Spring Boot 2.0构建服务组件。 Spring Boot 2.0快速构建服务组件全步骤 以下是使用Spring Boot 2.0快速构建服…

    Java 2023年5月15日
    00
  • SpringBoot 中常用注解及各种注解作用

    来详细讲解一下SpringBoot中常用注解及各种注解作用的攻略。 1. @SpringBootApplication 这是一个复合注解,包含了@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解。 @Configuration:表示这是一个配置类,可以用来替代xml配置文件。 @EnableA…

    Java 2023年5月15日
    00
  • Java8 Lambda表达式详解及实例

    Java8 Lambda表达式详解及实例 什么是Lambda表达式 Lambda表达式是Java8中引入的一个新特性,是一种轻量级的匿名函数,用来替代过往繁琐的匿名内部类编写方式。Lambda表达式可以被赋值到一个变量中,或者传递到一个方法中作为参数,像对象一样使用。Lambda表达式的语法简洁、优雅,让Java8代码的可读性和可维护性更加强大。 Lambd…

    Java 2023年5月26日
    00
  • 详解JavaEE使用过滤器实现登录(用户自动登录 安全登录 取消自动登录黑用户禁止登录)

    详解JavaEE使用过滤器实现登录 什么是过滤器 在网络开发中,过滤器是一种能够截取并处理请求和响应的功能组件。过滤器可以修改请求,修改响应内容并可以过滤/拦截请求和响应。使用过滤器可以在不影响原来的请求和响应方式的情况下增加一些自定义的操作,使得整个系统的设计更加灵活。 怎样使用过滤器实现登录 1. 过滤器的实现 过滤器需要实现Filter接口,接口中有三…

    Java 2023年6月15日
    00
  • java对象数组实现学生信息管理系统

    Java对象数组实现学生信息管理系统攻略 在Java中,我们可以使用对象数组来实现一个学生信息管理系统。我们可以将学生信息作为一个对象,使用对象数组来存储多个学生的信息。下面是实现学生信息管理系统的完整攻略。 1. 定义学生信息类 我们首先需要定义一个学生信息类,用于存储学生的信息,包括姓名、年龄、性别、学号等。以下是一个示例: public class S…

    Java 2023年5月24日
    00
  • 微信怎么群发标签好友信息?微信群发标签好友教程

    微信怎么群发标签好友信息 在微信中,我们可以通过标签来分类好友。有了标签,我们就可以很方便地进行按标签进行群发操作。下面,我们来详细讲解如何在微信中群发标签好友信息的操作步骤。 第一步:创建标签 首先,我们需要在微信中创建好友标签,把需要进行群发操作的好友添加进标签中。具体操作步骤如下: 点击微信底部的“我”选项,进入个人主页。 点击“通讯录”选项进入好友列…

    Java 2023年6月15日
    00
  • 记一次Flink遇到性能瓶颈

    前言 这周的主要时间花在Flink上面,做了一个简单的从文本文件中读取数据,然后存入数据库的例子,能够正常的实现功能,但是遇到个问题,我有四台机器,自己搭建了一个standalone的集群,不论我把并行度设置多少,跑起来的耗时都非常接近,实在是百思不得其解。机器多似乎并不能帮助它。 把过程记录在此,看后面随着学习的深入能不能解答出这个问题。 尝试过的修复方法…

    Java 2023年4月17日
    00
  • JSP开发之Spring方法注入之替换方法实现

    下面我将详细讲解“JSP开发之Spring方法注入之替换方法实现”的完整攻略: 一、准备工作 在开始使用Spring实现方法注入之前,需要先完成如下准备工作: 确认项目中已引入Spring框架,可以在项目的pom.xml文件中添加Spring依赖。 定义接口和实现类,例如: public interface TestService { void sayHel…

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