这篇文章主要介绍了hibernate环境搭建测试的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

真正要掌握,还得需要自己动手,才能丰衣足食。

所需jar包

jar包版本不同,找的地址也不同。这里用到的是hibernate-release-5.2.10 版本的jar包


除了这些jar包,还需要数据库驱动jar,根据自己用的数据库自定,这里用到的是oracle

2.jar包导入好,看看配置,在配置之前,看下实体和表结构。

实体 Users

packagecom.hib.entity;publicclassUsers{privateIntegerid;privateStringname;privateStringpass;privateStringaddress;publicIntegergetId(){returnid;}publicvoidsetId(Integerid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetPass(){returnpass;}publicvoidsetPass(Stringpass){this.pass=pass;}publicStringgetAddress(){returnaddress;}publicvoidsetAddress(Stringaddress){this.address=address;}publicUsers(Integerid,Stringname,Stringpass,Stringaddress){super();this.id=id;this.name=name;this.pass=pass;this.address=address;}publicUsers(){super();}@OverridepublicStringtoString(){return"Users[id="+id+",name="+name+",pass="+pass+",address="+address+"]";}}

表结构

在src下 hibernate.cfg.xml配置,如果不知道里面的配置怎么写。可以通过在下载的jar包中搜索hibernate.cfg.xml,里面有配置信息。

hibernate.cfg.xml 配置如下

<!DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><propertyname="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property><propertyname="hibernate.connection.username">ssh</property><propertyname="hibernate.connection.password">ssh</property><propertyname="hibernate.connection.url">jdbc:oracle:thin:@127.0.0.1:1521:xe</property><!--方言--><propertyname="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property><!--可视化sql--><propertyname="hibernate.show_sql">true</property><!--格式化sql,自动对可视化sql换行,对齐--><propertyname="hibernate.format_sql">true</property><!--映射文件配置--><mappingresource="User.hbm.xml"/></session-factory></hibernate-configuration>

3. User.hbm.xml配置

<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><!--name:是实体table是表名称--><classname="com.hib.entity.Users"table="TEST_USER"><idname="id"><!--主键自增策略,在下面会专门提到--><generatorclass="increment"></generator></id><!--name:是实体中属性的名称,column:是表中字段的名称,type是数据类型在这里发现后面的pass和address没有写column和type如果表字段和实体属性名称一致,可以省略不写--><propertyname="name"column="name"type="java.lang.String"/><propertyname="pass"/><propertyname="address"/></class></hibernate-mapping>

4.测试数据连接是否配置成功

packagecom.hib.test;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.Transaction;importorg.hibernate.cfg.Configuration;importorg.junit.Test;importcom.hib.entity.Users;publicclassTestConn{//获取sessionpublicstaticSessiongetSession(){//加载配置Configurationcfg=newConfiguration().configure();//获取sessionFactorySessionFactoryfactory=cfg.buildSessionFactory();//获取sessionSessionsession=factory.openSession();returnsession;}//查询@Testpublicvoidquery(){Sessionsession=getSession();//查询Usersusers=session.get(Users.class,1);System.out.println(users);//关闭资源session.close();}//在进行增删改时,好控制事务----插入@Testpublicvoidinsert(){Sessionsession=getSession();//开启事务Transactiontx=session.beginTransaction();Usersusers=newUsers(null,"xyz","xyz","china");//插入session.save(users);//事务提交tx.commit();//事务回滚//tx.rollback();session.close();}//更新数据前需要先查询出修改的数据@Testpublicvoidupdate(){Sessionsession=getSession();Transactiontx=session.beginTransaction();Usersusers=session.get(Users.class,1);users.setAddress("郑州");users.setName("小李飞刀");session.update(users);tx.commit();session.close();}//删除需要先出现出删除的数据@Testpublicvoiddelete(){Sessionsession=getSession();Transactiontx=session.beginTransaction();Usersusers=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 class="sequence">

<param name="sequence_name">st_id</param>

</generator>

</id>

3. identity :适用于mysql sqlserver 相当于2

<id name="id">

<generator class="identity"></generator>

</id>

4. uuid 生成32位长度全球唯一的字符串,适用于分布式系统中

5. foreign : 专用于1:1 共享主键的从表方

6. assigned: 手动指定ID,一般不用

这里值得一提:在使用sequence时,配置文件中写

<id name="id" column="id">

<generator class="sequence">

这里 name为 sequence_name,但我当时配置时候写的是sequence,出了错。搜了好久,也没有发现错误,并且别人写的也是sequence。这里我也没有去看其他版本,这里我使用是5.2版,可能是版本之间的问题。希望注意下。如果你不知道配置是sequence 还是sequence_name,可以搜当前版本的文件 sequence,会有一些文件和文件夹,找里面的配置,看里面写的是什么。

<param name="sequence_name">sqs_id</param>

</generator>

</id>

感谢你能够认真阅读完这篇文章,希望小编分享的“hibernate环境搭建测试的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!