Hibernate初步部署
admin
2023-06-07 00:41:33
0次

下载全套文件: hibernate-release-4.1.7.Final.zip

 

目录结构

Documentation文件夹下是开发帮助文档

Lib文件夹是开发使用的库,其中该文件夹下面的required目录是开发时必须导入的JAR文件;

Project文件夹是项目源码文件

 

Hibernate初步部署

JDBC与Hibernate的比较:

 

Hibernate初步部署

Hibernate初步部署

 

 

Hibernate的初步配置部署:

1.     创建web项目

2.     添加响应需要的Hibernate的jar包

3.     创建Java Bean业务实体类

4.     创建实体类映射的配置文件:**.hbm.xml

5.     创建Hibernate的配置文件hibernate.cfg.xml

6.     创建测试类测试hibernate是否配置成功

实体类:UserInfo.java

  1. public class UserInfo  

  2. {  

  3.    private int userid;  

  4.    private String userName;  

  5.    private String userPwd;  

  6.    private Date birthday;  

  7.  //省略了属性各种get和set方法  

  8. //创建含有id的构造函数  

  9.    public UserInfo(int id)  

  10.    {  

  11.        this.userid=id;  

  12.    }  

  13.     public UserInfo(int userid, String userName, String userPwd, Date birthday)  

  14.     {  

  15.         super();  

  16.         this.userid = userid;  

  17.         this.userName = userName;  

  18.         this.userPwd = userPwd;  

  19.         this.birthday = birthday;  

  20.     }  

  21.     //无参的构造函数是必须要有的  

  22.     public UserInfo()  

  23.     {  

  24.     }  

  25. }  

 

 

实体类的配置文件UserInfo.hbm.xml

(配置文件尽量和实体类名字去的一致方便管理和实体类放在同一个包中)

  1. xml version="1.0"?>  

  2.         "-//Hibernate/HibernateMapping DTD 3.0//EN"  

  3.      "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  

  4. <hibernate-mapping package="entity">  //package包指定实体类的包  

  5.     <class name="UserInfo" table="luser">    

  6. //name指定实体类名  table为数据库中实体类对应的表名如果没有指定就和类名一致  

  7.        <id name="userid">  

  8.             <generator class="native"/>  

  9.        id>  

  10. //id标识主键的字段 class=native标识自增长  

  11.        <property name="userName" column=”name” />  

  12. //property指定属性的字段,column可以指定数据库中对应字段的名称,如果没有就和实体类的属性名一致  

  13.        <property name="userPwd" />  

  14.        <property name="birthday" />  

  15.     class>  

  16. hibernate-mapping> 

 

Hibernate的配置文件hibernate.cfg.xml

 

 

  1.     "-//Hibernate/HibernateConfiguration DTD 3.0//EN"  

  2.     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">  

  3. <hibernate-configuration>  

  4.     <session-factory>  

  5.           

  6.         <property name="show_sql">trueproperty>  

  7.           

  8.         <property name="format_sql">trueproperty>  

  9.           

  10.           

  11.         <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialectproperty>  

  12.           

  13.         <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriverproperty>  

  14.           

  15.         <property name="hibernate.connection.url">jdbc:oracle:thin:@192.168.3.252:1521:orclproperty>  

  16.           

  17.         <property name="hibernate.connection.username">bam1property>  

  18.         <property name="hibernate.connection.password">bam1property>  

  19.           

  20.         <property name="hibernate.hbm2ddl.auto">updateproperty>  

  21.           

  22.         <mapping resource="entity/UserInfo.hbm.xml"/>  

  23.     session-factory>  

  24. hibernate-configuration>  

 

测试类Test.java

添加一条数据:

  1. public static void add()  

  2.     {  

  3.          

  4.         //第一步:读取Hibernate的配置文件  hibernamte.cfg.xml文件  

  5.         Configurationcon=new Configuration().configure();  

  6.         //第二步:创建服务注册构建器对象,通过配置对象中加载所有的配置信息  

  7.         ServiceRegistryBuilderregbulider=newServiceRegistryBuilder().applySettings(con.getProperties());  

  8.         //创建注册服务  

  9.         ServiceRegistryreg=regbulider.buildServiceRegistry();  

  10.         //第三步:创建会话工厂  

  11.         SessionFactorysessionFactory=con.buildSessionFactory(reg);  

  12.         //第四步:创建数据操作会话  

  13.         Sessionsession=sessionFactory.openSession();  

  14.         //创建对象  

  15.          */  

  16.         UserInfohanhan=new UserInfo();  

  17.         hanhan.setUserName("hanhan313");  

  18.         hanhan.setUserPwd("123");  

  19.         hanhan.setBirthday(new Date());  

  20.         /*  

  21.         //创建事物  

  22.         Transactiontran=session.beginTransaction();  

  23.         //保存数据  

  24.         session.save(hanhan);  

  25.         //提交事物  

  26.         tran.commit();  

  27.         //关闭对话  

  28.         session.close();  

  29.          

  30. }  

 

查询一条数据:

创建了session回话后

//查询id为10的userinfo的用户信息

UserInfouser=session.get(UserInfo.class,10);

更新一条数据:

首先查询出数据

UserInfo user=session.get(UserInfo.class,10);

再对user进行数据修改后

再通过获取到session回话

session.update(user)

删除一条数据:

删除数据时将需要删除的id数据包装成对象

比如:

UserInfouser=new UserInfo();

User.setUserId(10);

session.delete(user);  //删除时就会自动获取到user中id进行删除

hibernate的流程:

Hibernate初步部署

 

持久化JAVA类必须遵循的原则

 

1、为类的持久化字段声明访问方法(get/set),Hibernate对JavaBeans风格的属性实行持久化。

2、实现一个默认的构造方法,这样的话Hibernate就可以使用Constructor.newInstance()方法来实例化对象。

3、如果是集合类型的属性,它的类型必须定义为集合的接口,例如:List、Set

4、提供一个标识属性(Identifier property),如果没有该属性,一些功能不起作用,比如:级联更新,session.saveOrUpdate()。

 

对象的状态:

瞬时(transient):数据库中没有数据与之对应,超过作用域会被JVM垃圾回收器回收,一般是new出来且与session没有关联的对象。

持久(persistent):数据库中有数据与之对应,当前与session有关联,并且相关联的session没有关闭,事务没有提交;持久对象状态发生改变,在事务提交时会影响到数据库(hibernate能检测到)。

脱管(detached):数据库中有数据与之对应,但当前没有session与之关联;托管对象状态发生改变,hibernate不能检测到。

Hibernate初步部署

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...