hibernate环境搭建测试的示例分析

39次阅读
没有评论

共计 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 行业资讯频道,更多相关知识等着你来学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计4430字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)