程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Spring4整合Hibernate5詳細步驟

Spring4整合Hibernate5詳細步驟

編輯:關於JAVA

Spring4整合Hibernate5詳細步驟。本站提示廣大學習愛好者:(Spring4整合Hibernate5詳細步驟)文章只能為提供參考,不一定能成為您想要的結果。以下是Spring4整合Hibernate5詳細步驟正文


Spring與Hiberante整合

通過hibernate的學習,我們知道,hibernate主要在hibernate.cfg.xml配置文件中

接下來我們看一下hibernate的一個配置文件

hibernate配置文件

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  "http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <!-- 指定連接數據庫所用的驅動 -->
    <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    <!-- 指定連接數據庫的url,其中hibernate是本應用連接的數據庫名 -->
    <property name="connection.url">jdbc:mysql://localhost/hibernate_test</property>
    <!-- 指定連接數據庫的用戶名 -->
    <property name="connection.username">root</property>
    <!-- 指定連接數據庫的密碼 -->
    <property name="connection.password">cheng</property>
    <!-- 指定連接池裡最大連接數 -->
    <property name="hibernate.c3p0.max_size">20</property>
    <!-- 指定連接池裡最小連接數 -->
    <property name="hibernate.c3p0.min_size">1</property>
    <!-- 指定連接池裡連接的超時時長 -->
    <property name="hibernate.c3p0.timeout">5000</property>
    <!-- 指定連接池裡最大緩存多少個Statement對象 -->
    <property name="hibernate.c3p0.max_statements">100</property>
    <property name="hibernate.c3p0.idle_test_period">3000</property>
    <property name="hibernate.c3p0.acquire_increment">2</property>
    <property name="hibernate.c3p0.validate">true</property>
    <!-- 指定數據庫方言 -->
    <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
    <!-- 根據需要自動創建數據表 -->
    <property name="hbm2ddl.auto">update</property><!--①-->
    <!-- 顯示Hibernate持久化操作所生成的SQL -->
    <property name="show_sql">true</property>
    <!-- 將SQL腳本進行格式化後再輸出 -->
    <property name="hibernate.format_sql">true</property>
    <!-- 避免這個錯誤信息Disabling contextual LOB creation as createClob() method threw error :java.lang.reflect.InvocationTargetException -->
    <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
    <!-- 羅列所有持久化類的類名 -->
    <mapping class="com.wechat.entity.po.User"/>
    <mapping class="com.wechat.entity.po.Person"/>
  </session-factory>
</hibernate-configuration>

配置文件的作用

hibernate.cfg.xml文件的主要作用就是配置了一個session-factory

    在session-factory中主要通過property配置一些數據庫的連接信息,我們知道,spring通常會將這種數據庫連接用dataSource來表示,這樣一來,hibernate.cfg.xml文件中的所有跟數據庫連接的都可以干掉了,直接用spring的dataSource,而dataSource也可以用c3p0、dbcp等。 在session-factory中通過property除了配置一些數據庫的連接信息之外,還有一些hibernate的配置,比如方言、自動創建表機制、格式化sql等,這些信息也需要配置起來。 還有最關鍵的一個持久化類所在路徑的配置

當不采用spring整合的時候,我們使用hibernate時主要是用hibernate從sessionFactory中去的session,然後用session來操作持久化對象,而sessionFactory來自於配置文件。像下面這樣:

  StandardServiceRegistry registry = null;
  SessionFactory sessionFactory = null;
  Session session = null;
  Transaction transaction = null;
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

  @Before
  public void init() {

    registry = new StandardServiceRegistryBuilder()
        .configure() // configures settings from hibernate.cfg.xml
        .build();
    sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory();
    session = sessionFactory.openSession();
    //開始事務
    transaction = session.getTransaction();
    transaction.begin();
  }

  @Test
  public void testSaveUser() {
    User user = new User();
    user.setUsername("張學友");
    user.setPassword("jacky");
    user.setRegistDate(sdf.format(new Date()));
    File file = new File("D:"+File.separator+"ubuntu.png" />

好了Spring整合hibernate就寫到這裡。

項目地址:https://github.com/peer44/testwechat

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved