共计 4430 个字符,预计需要花费 12 分钟才能阅读完成。
这篇文章主要介绍了 hibernate 环境搭建测试的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。
真正要掌握,还得需要自己动手,才能丰衣足食。
所需 jar 包
jar 包版本不同, 找的地址也不同。这里用到的是 hibernate-release-5.2.10 版本的 jar 包
除了这些 jar 包,还需要数据库驱动 jar, 根据自己用的数据库自定,这里用到的是 oracle
2.jar 包导入好,看看配置,在配置之前,看下实体和表结构。
实体 Users
package com.hib.entity;
public class Users {
private Integer id;
private String name;
private String pass;
private String address;
public Integer getId() {
return id;
public void setId(Integer id) {
this.id = id;
public String getName() {
return name;
public void setName(String name) {
this.name = name;
public String getPass() {
return pass;
public void setPass(String pass) {
this.pass = pass;
public String getAddress() {
return address;
public void setAddress(String address) {
this.address = address;
public Users(Integer id, String name, String pass, String address) {super();
this.id = id;
this.name = name;
this.pass = pass;
this.address = address;
public Users() {super();
@Override
public String toString() {return Users [id= + id + , name= + name + , pass= + pass + , address= + address + ]
}
表结构
在 src 下 hibernate.cfg.xml 配置,如果不知道里面的配置怎么写。可以通过在下载的 jar 包中搜索 hibernate.cfg.xml,里面有配置信息。
hibernate.cfg.xml 配置如下
!DOCTYPE hibernate-configuration PUBLIC
-//Hibernate/Hibernate Configuration DTD 3.0//EN
http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd
hibernate-configuration
session-factory
property name= hibernate.connection.driver_class oracle.jdbc.OracleDriver /property
property name= hibernate.connection.username ssh /property
property name= hibernate.connection.password ssh /property
property name= hibernate.connection.url jdbc:oracle:thin:@127.0.0.1:1521:xe /property
!-- 方言 --
property name= hibernate.dialect org.hibernate.dialect.Oracle10gDialect /property
!-- 可视化 sql --
property name= hibernate.show_sql true /property
!-- 格式化 sql,自动对可视化 sql 换行, 对齐 --
property name= hibernate.format_sql true /property
!-- 映射文件配置 --
mapping resource= User.hbm.xml /
/session-factory
/hibernate-configuration
3. User.hbm.xml 配置
?xml version= 1.0 encoding= UTF-8 ?
!DOCTYPE hibernate-mapping PUBLIC -//Hibernate/Hibernate Mapping DTD 3.0//EN
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd
hibernate-mapping
!-- name: 是实体 table 是表名称 --
class name= com.hib.entity.Users table= TEST_USER
id name= id
!-- 主键自增策略, 在下面会专门提到 --
generator >4. 测试数据连接是否配置成功
package com.hib.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.hib.entity.Users;
public class TestConn {
// 获取 session
public static Session getSession(){
// 加载配置
Configuration cfg = new Configuration().configure();
// 获取 sessionFactory
SessionFactory factory = cfg.buildSessionFactory();
// 获取 session
Session session = factory.openSession();
return session;
// 查询
@Test
public void query(){Session session = getSession();
// 查询
Users users = session.get(Users.class, 1);
System.out.println(users);
// 关闭资源
session.close();
// 在进行增删改时 ,好控制事务 ---- 插入
@Test
public void insert(){Session session = getSession();
// 开启事务
Transaction tx = session.beginTransaction();
Users users = new Users(null, xyz , xyz , china
// 插入
session.save(users);
// 事务提交
tx.commit();
// 事务回滚
//tx.rollback();
session.close();
// 更新数据前 需要先查询出修改的数据
@Test
public void update(){Session session = getSession();
Transaction tx = session.beginTransaction();
Users users = session.get(Users.class, 1);
users.setAddress( 郑州
users.setName( 小李飞刀
session.update(users);
tx.commit();
session.close();
// 删除 需要先出现出删除的数据
@Test
public void delete(){Session session = getSession();
Transaction tx = session.beginTransaction();
Users users = session.get(Users.class, 1);
session.delete(users);
tx.commit();
session.close();}
这里讲解下关于 hibernate 中主键的生成策略
increment 一般用于测试, 多并发环境中存在主键取值冲突,这里文章包括下面写的都是用的
这个,方便测试。实际项目中,没有人会用到。
2. sequence oralcle 数据库专用
在 oracle 数据库中创建序列:create sequence st_id start with 7 increment by 1;
意思是:创建序列名为 st_id 从 7 开始,每次增加 1
hibernate 中默认值是 hibernate_sequence
id name= id
generator >
param name= sequence_name st_id /param
/generator
/id
3. identity : 适用于 mysql sqlserver 相当于 2
id name= id
generator >
/id
4. uuid 生成 32 位长度全球唯一的字符串, 适用于分布式系统中
5. foreign : 专用于 1:1 共享主键的从表方
6. assigned: 手动指定 ID, 一般不用
这里值得一提:在使用 sequence 时, 配置文件中写
id name= id column= id
generator >
这里 name 为 sequence_name, 但我当时配置时候写的是 sequence, 出了错。搜了好久,也没有发现错误,并且别人写的也是 sequence。这里我也没有去看其他版本,这里我使用是 5.2 版,可能是版本之间的问题。希望注意下。如果你不知道配置是 sequence 还是 sequence_name,可以搜当前版本的文件 sequence,会有一些文件和文件夹,找里面的配置,看里面写的是什么。
param name= sequence_name sqs_id /param
/generator
/id
感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“hibernate 环境搭建测试的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!