java 从零开始,学习笔记之基础入门(三十六)

时间:2022-03-11 19:43:26

Hibernate

使用Hibernate的三个准备:

1.        导入Hibernate库(jar包)

2.        添加核心配置文件hibernate.cfg.xml

3.        添加对应表的实体类和映射文件

配置详解

hibernate.dialect 一个Hibernate Dialect类名允许Hibernate针对特定的关系数据库生成优化的SQL.取值 full.classname.of.Dialect

hibernate.show_sql 输出所有SQL语句到控制台.有一个另外的选择是把org.hibernate.SQL这个log category设为debug eg. true | false

hibernate.format_sql logconsole中打印出更漂亮的SQL取值 true | false

hibernate.default_schema 在生成的SQL,将给定的schema/tablespace附加于非全限定名的表名上.取值 SCHEMA_NAME

hibernate.default_catalog 在生成的SQL,将给定的catalog附加于非全限定名的表名上.取值 CATALOG_NAME

hibernate.session_factory_name SessionFactory创建后,将自动使用这个名字绑定到JNDI.取值 jndi/composite/name

hibernate.max_fetch_depth 为单向关联(一对一,多对一)的外连接抓取(outer join fetch)树设置最大深度.值为0意味着将关闭默认的外连接抓取.取值建议在03之间取值

hibernate.default_batch_fetch_size Hibernate关联的批量抓取设置默认数量.取值建议的取值为4, 8,16

hibernate.default_entity_mode 为由这个SessionFactory打开的所有Session指定默认的实体表现模式.取值 dynamic-map, dom4j, pojo

hibernate.order_updates 强制Hibernate按照被更新数据的主键,为SQL更新排序。这么做将减少在高并发系统中事务的死锁。取值 true | false

hibernate.generate_statistics 如果开启, Hibernate将收集有助于性能调节的统计数据.取值 true | false

hibernate.use_identifer_rollback 如果开启,在对象被删除时生成的标识属性将被重设为默认值.取值 true | false

hibernate.use_sql_comments 如果开启, Hibernate将在SQL中生成有助于调试的注释信息,默认值为false. 取值 true | false

 

 

核心配置文件

hibernate.cfg.xml

<?xmlversion='1.0'encoding='UTF-8'?>

<!DOCTYPEhibernate-configuration PUBLIC

          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

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

 

<!-- Generated by MyEclipse Hibernate Tools.                  -->

<hibernate-configuration>

 

<session-factory>

<!-- 配置数据源 -->

    <propertyname="dialect">

       org.hibernate.dialect.SQLServerDialect

    </property>

    <propertyname="connection.url">

       jdbc:sqlserver://localhost:1433;databaseName=java001

    </property>

    <propertyname="connection.username">

       sa

    </property>

    <propertyname="connection.password">

       123

    </property>

    <propertyname="connection.driver_class">

       com.microsoft.sqlserver.jdbc.SQLServerDriver

    </property>

 

    <propertyname="myeclipse.connection.profile">sqlconn</property>

   

<!-- 运行时在控制台显示SQL语句 -->

    <propertyname="show_sql">true</property>

    <mappingresource="com/ibm/pojo/user.hbm.xml"/>

</session-factory>

 

</hibernate-configuration>

添加对应表的实体类和映射文件

<?xmlversion="1.0"encoding="utf-8"?>

<!DOCTYPEhibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

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

<hibernate-mapping>

 

<!-- 实现JAVA类到数据库表的映射 -->

<class name="com.ibm.pojo.User" table="tbl_user"  schema="dbo"

catalog="java001" lazy="true">

    <!--主键生成器 native由数据库生成 -->

<id name="userId"  type="java.lang.Integer">

<columnname="uid"/>

<generator class="native"/>

</id>

 

<property name="userName" type="java.lang.String"  lazy="true">

<column name="uname" length="30"/>

</property>

</class>

 

</hibernate-mapping>

 

 

使用Hibernate的七个步骤:

1.        Configuration(配置方式见三个准备)

2.        创建SessionFactory

3.        打开Session

4.        开始一个事务

5.        持久化操作save/update/delete/get

6.        提交事务

7.        关闭session

 

创建对象dto.user

User.java

package com.ibm.pojo;

 

import  java.io.Serializable;

 

public classUser  implements Serializable{

    public User(){

      

    }

   

     private IntegeruserId;

     private StringuserName;

    

 

    public Integer getUserId() {

       returnuserId;

    }

 

    public void setUserId(Integer userId) {

       this.userId = userId;

    }

 

    public String getUserName() {

       return userName;

    }

 

    public void setUserName(String userName) {

       this.userName = userName;

    }

    

}

 

自动创建数据库表

ExportUtil.java

package com.ibm.util;

 

import org.hibernate.cfg.Configuration;

import org.hibernate.tool.hbm2ddl.SchemaExport;

 

public class ExportUtil {

    public static void main(String[] args) {

       //读取配置文件

       Configuration config = new Configuration().configure();

      

       //针对配置文件中的信息进行导出操作

       SchemaExport se = new SchemaExport(config);

      

       //创建脚本 并执行脚本

       //脚本创建完毕后和数据库关联上,并执行

       se.create(true,true);

    }

 

}

测试七个步骤

Test.java

package com.ibm.test;

 

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

import org.hibernate.classic.Session;

 

import com.ibm.pojo.User;

 

public class Test {

    public staticvoid main(String[] args) {

       try{

          

       //读取配置信息

       Configuration config = new Configuration().configure();

       //获得session工程(链接工厂)

       SessionFactory sessionFactory =config.buildSessionFactory();

       //获得session(获得连接)

       Session session = sessionFactory.openSession();

       //开启事务

       Transaction tran = session.beginTransaction();

       User user = new User();

       user.setUserName("javayang");

       //保存数据

       session.save(user);

       //提交事务

       tran.commit();

       //关闭session

       session.close();

      

       }catch(Exception e){

           e.printStackTrace();

       }

    }

}