成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡單講述Hibernate實例

開發 后端
這里介紹Hibernate實例,increment可以在一個Hibernate實例的應用上很方便的時候,但是在集群的時候就不行了。

在向大家詳細介紹Hibernate實例之前,首先讓大家了解下Hibernate提供了多種生成主鍵的方式,然后全面介紹Hibernate實例。

Hibernate(目前使用的版本是3.2)中提供了多種生成主鍵的方式。然而當前的這么多種生成方式未必能滿足我們的要求。比如increment,可以在一個Hibernate實例的應用上很方便的時候,但是在集群的時候就不行了。再如 identity ,sequence ,native 是數據局提供的主鍵生成方式,往往也不是我們需要,而且在程序跨數據庫方面也體現出不足。還有基于算法的生成方式生成出來的主鍵基本都是字符串的。

我們現在需要一種生成方式:使用Long作為主鍵類型,自動增,支持集群。那么我們需要自定義一個我們的主鍵生成器才能實現了。

Hibernate實例代碼:

  1. package hibernate;  
  2.  
  3. import java.io.Serializable;  
  4. import java.sql.Connection;  
  5. import java.sql.PreparedStatement;  
  6. import java.sql.ResultSet;  
  7. import java.sql.SQLException;  
  8. import java.util.Properties;  
  9.  
  10. import org.apache.commons.logging.Log;  
  11. import org.apache.commons.logging.LogFactory;  
  12. import org.hibernate.HibernateException;  
  13. import org.hibernate.MappingException;  
  14. import org.hibernate.dialect.Dialect;  
  15. import org.hibernate.engine.SessionImplementor;  
  16. import org.hibernate.id.Configurable;  
  17. import org.hibernate.id.IdentifierGenerator;  
  18. import org.hibernate.id.PersistentIdentifierGenerator;  
  19. import org.hibernate.type.Type;  
  20.  
  21. public class IncrementGenerator implements IdentifierGenerator, Configurable {  
  22. private static final Log log = LogFactory.getLog(IncrementGenerator.class);  
  23. private Long next;  
  24. private String sql;  
  25. public Serializable generate(SessionImplementor session, Object object)  
  26. throws HibernateException {  
  27. if (sql!=null) {  
  28. getNext( session.connection() );  
  29. }  
  30. return next;  
  31. }  
  32.  
  33. public void configure(Type type, Properties params, Dialect d) 
    throws MappingException {  
  34. String table = params.getProperty("table");  
  35. if (table==null) table = params.
    getProperty(PersistentIdentifierGenerator.TABLE);  
  36. String column = params.getProperty("column");  
  37. if (column==null) column = params.
    getProperty(PersistentIdentifierGenerator.PK);  
  38. String schema = params.getProperty
    (PersistentIdentifierGenerator.SCHEMA);  
  39. sql = "select max("+column +") from " + 
    schema==null ? table : schema + '.' + table );  
  40. log.info(sql);  
  41. }  
  42.  
  43. private void getNext(Connection conn) throws HibernateException {  
  44. try {  
  45. PreparedStatement st = conn.prepareStatement(sql);  
  46. ResultSet rs = st.executeQuery();  
  47. if ( rs.next() ) {  
  48. next = rs.getLong(1) + 1;  
  49. }  
  50. else {  
  51. next = 1l;  
  52. }  
  53. }catch(SQLException e)  
  54. {  
  55. throw new HibernateException(e);  
  56. }  
  57. finally {  
  58. try{  
  59. conn.close();  
  60. }catch(SQLException e)  
  61. {  
  62. throw new HibernateException(e);  
  63. }  
  64. }  
  65. }  

配置:
在對應的hbm文件里面將id的配置如下:

  1. <id name="id" type="long" column="id" > 
  2. <generator class="hibernate.IncrementGenerator" /> 
  3. </id> 

【編輯推薦】

  1. Hibernate連接配置方法剖析
  2. Hibernate Session實例剖析
  3. 淺析Hibernate Callback接口
  4. Hibernate Session緩存概述
  5. Hibernate修改addMate方法
責任編輯:佚名 來源: IT168
相關推薦

2009-09-25 10:00:47

Hibernate映射

2009-09-28 10:14:08

Hibernate基礎

2009-09-25 13:39:40

Hibernate屬性

2009-09-27 16:51:40

Hibernate U

2009-09-24 10:40:19

Hibernate核心

2009-09-25 13:51:13

Hibernate S

2009-09-25 12:59:52

Hibernate映射

2009-09-25 15:03:21

Hibernate綁定

2009-09-27 13:25:22

2009-10-10 09:57:58

使用RHEL合法

2009-09-27 16:21:22

Hibernate C

2009-03-19 00:42:46

IFEO劫持程序

2009-10-16 13:26:53

VB.NET Exce

2009-09-23 17:05:52

Hibernate S

2009-12-18 15:28:19

Linux內核

2010-09-03 14:25:01

2010-03-18 11:13:42

2009-10-19 08:55:22

VB.NET多重繼承

2009-09-23 10:28:49

使用Hibernate

2009-09-23 15:12:41

Hibernate視圖
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: caoporn国产精品免费公开 | 天天躁日日躁狠狠躁2018小说 | 中国xxxx性xxxx产国 | 国产精品一区二区不卡 | 九九热在线免费视频 | 日韩精品三区 | 国产欧美在线 | 欧美a级成人淫片免费看 | 自拍偷拍中文字幕 | 亚洲欧美bt | 中文字幕 亚洲一区 | 在线视频中文字幕 | 高清18麻豆 | 国产一区欧美一区 | 国产99久久精品一区二区300 | 久久草视频 | 久久久青草婷婷精品综合日韩 | 成人午夜影院 | 久久久国产一区二区三区 | 成人欧美一区二区三区在线观看 | 亚洲免费视频一区 | 久久国 | 婷婷在线免费 | 日韩理论电影在线观看 | 国产高清精品一区二区三区 | 亚洲性网 | 久久久久久成人 | 91色视频在线观看 | heyzo在线| 天天操天天天 | 精品一区二区三区中文字幕 | 99这里只有精品 | 国产高清免费视频 | 97色综合 | 色综合久久天天综合网 | h视频网站在线观看 | 国产欧美一区二区三区日本久久久 | 亚洲一区欧美一区 | 色婷婷影院 | 色综合天天综合网国产成人网 | 国产免费一区二区三区免费视频 |