亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

如何在JAVA SE中使用Hibernate

2019-11-18 13:34:19
字體:
來源:轉載
供稿:網友

  目前人們很輕易發現Hibernate正迅速的成為流行的J2EE的O/R映射工具和數據集成框架(假如不是最流行的)。Hibernate為企業應用開發者操作關系數據庫的提供了清楚明了而又強大的工具。然而假如你需要在外部訪問那些包裝在J2EE web應用里的實體,情況又怎樣呢?你的開發跟應用獨立分開,卻又相同的實體以訪問你的數據嗎?又或者你得編寫附加的web組件來治理對數據的內部訪問嗎?

  在很多情況下,這些問題都會出現。我的情況是我的公司需要將來自多個供給商,有著多種文件格式的記錄導入到數據庫里。我想起我以前經常使用的方法,那就是編寫Shell和SQL教本(甚至是存儲過程)來導入數據。但是由于我們的數據模型太過復雜,我決定在web應用之外盡可能的利用現有的實體,SPRing DAO以及服務并且開發一個自定義的J2SE命令行數據加載工具。

  大問題:你該怎樣呢?

  現在很多Hibernate的文檔和范例都是綁定在容器上。不管是web應用還是內部的大型應用,總會使用到容器的。人們有很好的理由去使用它。容器是設計來提供對各種特性的支持,例如事務處理,線程以及安全?,F今,這些特性都是開發中等規模和企業應用所必需的工具。然而當你需要在容器之外訪問實體時,你該怎樣呢?你是使用現有的架構和代碼呢,還是會從一個不同的角度來解決問題,比如說完全采用另一種開發語言?當然,我們沒有正確答案。在本文的余下部分,我將說明我的方法:就是在Spring容器之外重用現有的實體/POJO.

  起初,腳本語言,例如Perl,Python,Ruby甚至Tcl(是的,我以前也做過這個)看起來有很多優勢。它們能省下很多時間,可以輕易得到初始結果,還能規避許多Hibernate潛在的復雜度。人們完全可能只用幾行代碼就可以連接數據庫,查詢結果,已經打印輸出到終端屏幕或者日志文件。然而,取決于你的數據模型,事情也(總是)會變得相當復雜。譬如說你有一個表 person, 其中有一個外鍵屬于表 address.當我們添加數據的時候,表address沒有正確的插入數據,就會導致表person 也不能插入了。這是個很典型的事務處理方面的問題。也許有人會說在腳本語言中這個問題不難解決,就像在你的主程序里一樣??墒菃栴}仍然存在,為什么要這樣做呢?業務邏輯不是已經在你的應用里面了嗎?為什么要在寫一遍代碼呢?而且這并不是唯一的情況,你必須重復你的工作和業務邏輯,這樣就會帶來出錯的可能。

  然而,有些人會覺得這樣也行,他們使用自己覺得最適合的工具。也許你已經因為程序之外的原因而有了某種獨立的架構;也許你會在獨立的數據庫里加載和測試數據,然后在通過各種測試后再遷移到產品的數據庫里;又也許你把數據庫維護外包出去,你只需要把相關文件發給合作伙伴讓他們去處理那些問題。總之,總會有很多理由不使用現有的Hibernate數據層。沒有誰對誰錯,只是假如你可以也愿意在你的應用之外使用現有的代碼,請往下看。我會告訴你一些方法,這能解決你不少的煩惱噢。

  配置

  假如你覺得可以在容器之外使用現有的Hibernate對象的話,那你首先要做的事就是得自己手工治理所有的配置項,在本文余下部分我所采用的方法是使用一個基于命令行的java程序。既然你已經配置了Hibernate xml配置文件,你應該知道需要提供的參數,例如JNDI DataSource名,實體映射文件,還有其他一些處理SQL日志的屬性。假如你想使用命令行程序的話,你就得解決如何解析XML文件和把它添加到配置項中的這些問題。雖然解析XML文件也不難,但這本身并不是我們的重點。因此,我建議使用propetries文件,properties文件比較直觀而且輕易加載并從中讀取數據。下面是配置Hibernate所需要的最小屬性集(不包括任何實體映射)。

  清單1:

hibernate.dialect=net.sf.hibernate.dialect.PostgreSQLDialect
hibernate.connection.driver_class=org.postgresql.Driver
hibernate.connection.url=jdbc:postgresql://devserver/devdb
hibernate.connection.username=dbuser
hibernate.connection.passWord=dbpassword
hibernate.query.substitutions yes 'Y'

  正如你所看到的,上面的屬性值指定了數據庫方言,JDBC驅動,數據庫url,用戶名,用戶密碼,以及是否使用查找替換。只要定義以上幾項數值并保存在文件hibernate.properties里(要放置在你的類路徑里面哦),就能很輕松的加載,填充到Hibernate Configuation類里面。

  清單2:

Properties props = new Properties();
try {
    props.load(props.getClass().getResourceAsStream("hibernate.properties"));
}catch(Exception e){
    System.out.println("Error loading hibernate properties.");
    e.printStackTrace();
    System.exit(0);
}

String driver = props.getProperty("hibernate.connection.driver_class");
String connUrl = props.getProperty("hibernate.connection.url");
String username = props.getProperty("hibernate.connection.username");
String password = props.getProperty("hibernate.connection.password");            

// In my examples, I use Postgres, but Hibernate
// supports virtually every popular dbms out there.
Class.forName("org.postgresql.Driver");
Connection conn = DriverManager.getConnection(connUrl, username, password);

Configuration cfg = new Configuration();
cfg.setProperties( props );
sessionFactory sessions = cfg.buildSessionFactory();
Session session = sessions.openSession(conn);



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频网站| 久99九色视频在线观看| 成人在线国产精品| 亚洲电影免费在线观看| 欧美精品一区在线播放| 国产精品久久久av| 日韩激情视频在线| 亚洲午夜av久久乱码| 亚洲日本aⅴ片在线观看香蕉| 亚洲视频在线免费观看| 日本成人在线视频网址| 国产午夜精品一区二区三区| 中文字幕不卡在线视频极品| 日本在线观看天堂男亚洲| 91精品国产综合久久久久久久久| 亚洲一区二区三区xxx视频| 日本三级久久久| 色天天综合狠狠色| 欧美日韩国产区| 美女啪啪无遮挡免费久久网站| 精品日韩视频在线观看| 日韩电影在线观看永久视频免费网站| 美日韩丰满少妇在线观看| 色综合久综合久久综合久鬼88| 亚州成人av在线| 亚洲精品久久久久久下一站| 中文字幕亚洲图片| 欧美人与物videos| 国产成人精品免费视频| 国产手机视频精品| 欧美激情区在线播放| 亚洲精品动漫久久久久| 欧洲美女免费图片一区| 亚洲人在线观看| 久久97精品久久久久久久不卡| 热门国产精品亚洲第一区在线| 亚洲欧美日本伦理| 国产丝袜精品视频| 8050国产精品久久久久久| 亚洲精品永久免费| 国产噜噜噜噜噜久久久久久久久| 裸体女人亚洲精品一区| 日韩视频免费大全中文字幕| 国产精品成av人在线视午夜片| 中文字幕日韩综合av| 欧美精品www在线观看| 欧美亚洲国产日韩2020| 美女av一区二区三区| 少妇av一区二区三区| 亚洲精品国产欧美| 国产精品最新在线观看| 欧美一级视频一区二区| 97视频在线观看免费高清完整版在线观看| 亚洲综合中文字幕68页| 97香蕉超级碰碰久久免费软件| 亚洲四色影视在线观看| 国产精品九九九| 在线亚洲午夜片av大片| 久久精品男人天堂| 亚洲乱码国产乱码精品精| 亚洲天堂网在线观看| 国产日产久久高清欧美一区| 日韩视频免费大全中文字幕| 欧美国产日韩视频| 92国产精品久久久久首页| 欧美午夜精品久久久久久浪潮| 91色琪琪电影亚洲精品久久| 中文字幕日韩有码| 色黄久久久久久| 亚洲精品v天堂中文字幕| 亚洲国产小视频在线观看| 国产亚洲欧洲在线| 国产精品色悠悠| 一区二区三区亚洲| 日韩在线视频播放| 一夜七次郎国产精品亚洲| 国产精品久久久久一区二区| 一区二区成人av| 亚洲国产另类久久精品| 精品国产一区二区在线| 亚洲天堂成人在线视频| 日韩av黄色在线观看| 2019中文在线观看| 日韩精品www| 国产成人亚洲精品| www.99久久热国产日韩欧美.com| 亚洲天堂2020| 精品福利免费观看| 2019日本中文字幕| www高清在线视频日韩欧美| 国产一区视频在线播放| 国产精品免费一区二区三区都可以| 亚洲一区二区三区成人在线视频精品| 亚洲精品中文字幕有码专区| 91sao在线观看国产| 亚洲sss综合天堂久久| 欧美日韩亚洲国产一区| 亚洲精品动漫久久久久| 久久久999精品| 欧美激情a在线| 亚洲精品国产精品久久清纯直播| 中文字幕v亚洲ⅴv天堂| 狠狠综合久久av一区二区小说| 国产精品极品美女粉嫩高清在线| 欧美夫妻性生活视频| 久久久久久网站| 成人免费网站在线看| 黄色一区二区在线观看| 日本中文字幕久久看| 国产这里只有精品| 日韩激情第一页| 精品呦交小u女在线| 亚洲xxxx视频| 国产精品一区二区久久国产| 日韩av免费在线播放| 欧美国产日韩精品| 日韩av在线看| 91国产精品视频在线| 中文字幕精品国产| 国语自产精品视频在线看一大j8| 97**国产露脸精品国产| 91产国在线观看动作片喷水| 日韩欧美在线观看视频| 在线不卡国产精品| 亚洲国产天堂久久综合网| 亚洲一区二区久久| 国产精品中文字幕在线观看| 国产精品男人的天堂| 日本精品视频在线观看| 国产精品爽黄69天堂a| 91天堂在线观看| 5252色成人免费视频| 成人黄色免费在线观看| 美日韩丰满少妇在线观看| 欧美性视频在线| 欧美日韩亚洲精品内裤| 亚洲天堂开心观看| 中文字幕成人在线| 日本韩国欧美精品大片卡二| 91av国产在线| 成人午夜在线视频一区| 亚洲精品在线91| 国产精品视频中文字幕91| 亚洲aⅴ男人的天堂在线观看| 欧美日韩在线视频观看| 国产xxx69麻豆国语对白| 久久亚洲国产成人| 国精产品一区一区三区有限在线| 欧美日韩激情视频8区| 欧美日韩精品二区| 欧美国产视频日韩| 国产精品中文字幕在线| 亚洲精品日韩激情在线电影| 欧美交受高潮1| 国产精品成人一区二区| 这里只有精品丝袜| 国产精品美乳在线观看| 国产美女高潮久久白浆| 日韩电影在线观看免费| 国产啪精品视频网站| 色婷婷av一区二区三区久久| 精品人伦一区二区三区蜜桃免费| 国产午夜精品全部视频在线播放| 日韩av免费一区|