新手学做网站电子版,湘潭网站建设 h磐石网络,枣庄住房和城乡建设局网站,wordpress极简模板对于hibernate的介绍#xff0c;网络上一搜一堆#xff0c;恐怕我写的也没前辈总结的好。这个博主总结的十分好,方便大家欣赏 http://blog.csdn.net/liujiahan629629/article/details/21442607 真正要掌握#xff0c;还得需要自己动手#xff0c;才能丰衣足食。所需jar包j… 对于hibernate的介绍网络上一搜一堆恐怕我写的也没前辈总结的好。这个博主总结的十分好,方便大家欣赏 http://blog.csdn.net/liujiahan629629/article/details/21442607 真正要掌握还得需要自己动手才能丰衣足食。所需jar包jar包版本不同,找的地址也不同。这里用到的是 hibernate-release-5.2.10 版本的jar包除了这些jar包还需要数据库驱动jar,根据自己用的数据库自定这里用到的是oracle 2.jar包导入好看看配置在配置之前看下实体和表结构。实体 Userspackage 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();}Overridepublic 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//ENhttp://www.hibernate.org/dtd/hibernate-configuration-3.0.dtdhibernate-configurationsession-factoryproperty namehibernate.connection.driver_classoracle.jdbc.OracleDriver/propertyproperty namehibernate.connection.usernamessh/propertyproperty namehibernate.connection.passwordssh/propertyproperty namehibernate.connection.urljdbc:oracle:thin:127.0.0.1:1521:xe/property!-- 方言 --property namehibernate.dialectorg.hibernate.dialect.Oracle10gDialect/property!-- 可视化sql --property namehibernate.show_sqltrue/property!-- 格式化sql自动对可视化sql换行,对齐 --property namehibernate.format_sqltrue/property!-- 映射文件配置 --mapping resourceUser.hbm.xml//session-factory
/hibernate-configuration3. User.hbm.xml配置?xml version1.0 encodingUTF-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 namecom.hib.entity.Users tableTEST_USERid nameid!-- 主键自增策略,在下面会专门提到 --generator classincrement/generator/id!-- name:是实体中属性的名称,column:是表中字段的名称,type是数据类型 在这里发现后面的 pass和 address 没有写column和type如果表字段和实体属性名称一致,可以省略不写--property namename columnname typejava.lang.String/property namepass/property nameaddress//class/hibernate-mapping4.测试数据连接是否配置成功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 {// 获取sessionpublic static Session getSession(){// 加载配置Configuration cfg new Configuration().configure();// 获取sessionFactorySessionFactory factory cfg.buildSessionFactory();// 获取sessionSession session factory.openSession();return session;}// 查询Testpublic void query(){Session session getSession();// 查询Users users session.get(Users.class, 1);System.out.println(users);//关闭资源session.close();}// 在进行增删改时 好控制事务 ---- 插入Testpublic 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();}// 更新数据前 需要先查询出修改的数据Testpublic 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();}// 删除 需要先出现出删除的数据Testpublic 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 nameidgenerator classsequenceparam namesequence_namest_id/param/generator/id3. identity :适用于mysql sqlserver 相当于2 id nameid generator classidentity/generator/id4. uuid 生成32位长度全球唯一的字符串,适用于分布式系统中5. foreign : 专用于11 共享主键的从表方 6. assigned: 手动指定ID,一般不用这里值得一提在使用sequence时,配置文件中写id nameid columnid generator classsequence 这里 name为 sequence_name,但我当时配置时候写的是sequence,出了错。搜了好久也没有发现错误并且别人写的也是sequence。这里我也没有去看其他版本这里我使用是5.2版可能是版本之间的问题。希望注意下。如果你不知道配置是sequence 还是sequence_name可以搜当前版本的文件 sequence会有一些文件和文件夹找里面的配置看里面写的是什么。 param namesequence_namesqs_id/param /generator/id这里仅仅是个测试后面的会继续更新不足希望多多指教。 转载于:https://blog.51cto.com/zhuws/1932652