3.hello hibernate

一、Hibernate的開發步驟

1、引入jar文件
2、配置
3、api
hibernate的映射文件的配置是不容易的,是重點學習的地方。

二、Hello Hibernate

1、數據庫表準備

數據庫名 :test
表:
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (`id` int(11) NOT NULL auto_increment,`name` varchar(255),`birthday` date,PRIMARY KEY  (`id`)
);
ps:
主鍵id,int類型,必須設置 auto_increment 自增長。如果不設置,hibernate在操作mysql數據庫保存數據時會報錯誤:
java.sql.SQLException: Field 'id' doesn't have a default value

2、引入jar文件

*hibernate3.6
hibernate3.jar核心 ?+ ?required文件夾里的jar+ ?jpa文件夾里的jar? + 數據庫驅動包。
hibernate3.jar核心:hibernate-distribution-3.6.0.Final \?hibernate3.jar
required文件夾里的jar:hibernate-distribution-3.6.0.Final \ lib \?required
jpa文件夾里的jar:hibernate-distribution-3.6.0.Final \ lib \ jpa
數據庫驅動包:本例用mysql。
--------------------必須的包如下9個:---------------------------
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate3.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
mysql-connector-java-5.1.8-bin.jar
slf4j-api-1.6.1.jar

3、寫對象以及對象的映射

User.java
package hello.hibernate;import java.util.Date;public class User {private int userId;private String username;private Date birthday;//省略構造,get,set方法
}

User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="hello.hibernate"><class name="User" table="users"><!-- 主鍵映射 --><id name="userId" column="id"><generator class="native" /></id><!-- 非主鍵映射 --><property name="username" column="name"></property><property name="birthday" column="birthday"></property></class>
</hibernate-mapping>

PS:<hibernate-mapping package="hello.hibernate"> 的 package必須寫,如果不寫會報:
Could not parse mapping document from resource hello/hibernate/User.hbm.xml

4、src/hibernate.cfg.xml ?主配置文件

1、數據庫連接配置
2、加載所用的映射(*.hbm.xml)
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!-- 數據庫連接配置 --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql:///test</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">123456</property><!-- sql方言:告訴hibernate你在用哪個數據庫 --><property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property><property name="show_sql">true</property><!-- 加載所用的映射(*.hbm.xml) --><mapping resource="hello/hibernate/User.hbm.xml"/></session-factory>
</hibernate-configuration>

5、測試類編寫,使用api

@Testpublic void test(){User user=new User();user.setUsername("hello");user.setBirthday(new Date());//獲取加載配置文件的管理類對象Configuration config=new Configuration();//讀取配置文件,默認讀取加載src/hibernate.cfg.xmlconfig.configure();//創建session工廠對象SessionFactory sf=config.buildSessionFactory();//創建會話對象,代表與數據庫的一次會話Session session=sf.openSession();//開啟事務Transaction tx=session.beginTransaction();//保存數據session.save(user);//提交事務tx.commit();//關閉會話session.close();//關閉會話工廠sf.close();}

效果:
控制臺打印出hibernate執行了的sql語句
mysql數據庫test--users表多了一條記錄



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539871.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539871.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539871.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

無法連接oralce問題(不斷更新)

1、oracle自帶的sqlplus能連接&#xff0c;但第三方工具如plsqldev不能連接 解決方法&#xff1a;1、確認listener.ora&#xff0c;tnsnames.ora配置文件中的host地址一致。且&#xff1a;listener.ora只能配置主機名。winr&#xff0c;cmd&#xff0c;hostname 獲取主機名。2、…

新版vue-cli搭建多頁面應用

2019獨角獸企業重金招聘Python工程師標準>>> 折騰了好久&#xff0c;終于把坑踩完了&#xff0c;廢話不多說&#xff0c;上教程~ github地址&#xff1a;https://github.com/guolihuaGitHub/vue-cli-multipage 另外推薦一下我另一篇博客&#xff0c;我覺得這篇好用&…

android開發方法數,Android減少App方法數

作為Android開發者我們都知道Android應用方法數65535這樣一個限制&#xff0c;這是因為在Android系統中&#xff0c;方法的id使用short類型存儲在Dex文件中&#xff0c;而short類型的取值范圍是-32,768到32,767&#xff0c;因此導致Android應用方法數65535這樣一個最大限制&…

內表,外表

一、內表 Internal Table 內表與結構體基本類似&#xff0c;它同樣是程序運行中被臨時創建的一個存儲空間&#xff0c;它是一個可包含多條記錄的數據表。 二、外表 外表(external table)就像普通的表對像一樣&#xff0c;可以select等&#xff0c;只是它是只讀的&#xff0c;數…

國外分享插件

<script type"text/javascript" src"//s7.addthis.com/js/300/addthis_widget.js#pubidra-59effacb0a4e93a8"></script> addthis轉載于:https://www.cnblogs.com/ghfjj/p/8026946.html

android 方法超時,android socket.io中的發出或確認超時處理?

套接字發出超時確認我的AckWithTimeOut帶有實現的自定義超時類Ack接口public class AckWithTimeOut implements Ack {private Timer timer;private long timeOut 0;private boolean called false;public AckWithTimeOut() {}public AckWithTimeOut(long timeout_after) {if (…

2017 Google 開發者大會直播入口

今年&#xff0c;Google 開發者大會再度來襲&#xff01;大會將于 12 月 13 日和 14 日在上海舉辦&#xff0c;主題涵蓋機器學習 (Machine Learning)、Android、移動網絡&#xff08;Mobile Web)、TensorFlow、Firebase、云服務 (Cloud)、AR/VR、設計 (Design) 以及更多開發者相…

Oracle sqlldr

一、sqlldr的概述 sqlldr是oracle自帶的一個工具&#xff0c;用于導入文本文件的內容到oracle數據庫中。 該工具在&#xff1a;\oracle\app\oracle\product\11.2.0\server\bin\sqlldr.exe 二、使用 D:\oracle\app\oracle\product\11.2.0\server\bin\sqlldr.exe useriduser/…

android實現推送方式解決方案,Android實現推送方式解決方案系列教程

Android實現推送方式解決方案系列教程 1-5Android實現推送方式解決方案系列教程總結者&#xff1a;難民 交流Q群: 137824028Android實現推送方式解決方案系列之一--XMPP協議出自&#xff1a;http://doc.docsou.com/thread-1004-1-1.htmlXMPP協議簡介XMPP(Extensible Messageing…

日志組件slf4j介紹及配置詳解

2019獨角獸企業重金招聘Python工程師標準>>> 原文出自 1 基本介紹 每一個Java程序員都知道日志對于任何一個Java應用程序尤其是服務端程序是至關重要的&#xff0c;而很多程序員也已經熟悉各種不同的日志庫&#xff0c;如java.util.logging、Apache log4j、logback。…

count(*),count(1),count(0)效率

網上文章很多&#xff0c;今天分別跑了一張2000多萬行的表&#xff0c;該表沒有主鍵&#xff0c;索引&#xff0c;約束條件。 結果是&#xff0c;效率差不多

android 轉場動畫兼容問題,【Android】關于ARouter轉場動畫的問題

實現從主頁跳轉到搜索頁&#xff0c;再從搜索頁回退主頁withTransition(int resId,int resId)這個方法兩個參數第一個的意思是&#xff0c; A 到 B&#xff0c; B 的入場動畫第二個的意思是&#xff0c;A 到 B&#xff0c; A 的出場動畫即&#xff0c;入場動畫&#xff0c;出場…

Oracle 一些常用函數

ROUND&#xff1a; 如何使用 Oracle Round 函數 (四舍五入) 描述 : 傳回一個數值&#xff0c;該數值是按照指定的小數位元數進行四舍五入運算的結果。 SELECT ROUND( number, [ decimal_places ] ) FROM DUAL 參數: number : 欲處理之數值 decimal_places : 四舍五入 , 小數取…

基于github和hexo搭建博客 本地hexo博客搭建

正常都應該講一講為什么搭建博客&#xff0c;不過既然您能看見這篇文章&#xff0c;就說明你想搭建一個自己的博客&#xff0c;無論自己記錄自己的東西&#xff0c;或是為了顯得高大上。那就不廢話了&#xff0c;進入正題。 其實教大家搭建博客的文章很多&#xff0c;講的都不錯…

react不同環境不同配置angular_叫雨山斗雞優勢在哪里,環境不同,價值不同

叫雨山斗雞優勢在哪里&#xff0c;環境不同&#xff0c;價值不同 原生態高端食材網站&#xff0c;專注金線蓮、散放斗雞、斗雞蛋、野生蜂蜜、小耳黑豬肉等云南原生態套餐定制的高端食材供應商。云南叫雨山斗雞叫雨山斗雞原生態飼養 叫雨山斗雞源自于魯西斗雞&#xff0c;初代斗…

android studio 布局拖拽,為什么使用android studio不能像老師一樣在Design里隨意拖動控件...

qq_噴泉_02017-07-25 13:08已采納xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:layout_height"match_parent"tools:context"co…

Oracle自定義函數(不斷更新)

1、將數字轉為ip地址&#xff1a;IPAdd_DotNumFormat create or replace FUNCTION IPAdd_DotNumFormat(v_LfValue number)return varchar2 asv_DotNumString varchar2(50);v_flg Integer;v_NewLfValue number;v_tmp Integer;v_P1 Integer;v_P2 Integer;v_P3 Integer;v_P4…

element ui select設置不顯示不存在的項_appium—等待時間設置方法

引言&#xff1a;在做UI自動化的過程中&#xff0c;我們有時候為了等待元素的出現&#xff0c;需要加一些等待時間來幫助&#xff0c;但是有時候時間加的過多或者過少&#xff0c;這個沒有辦法判斷&#xff0c;今天就介紹幾種等待時間&#xff0c;我們看看那種適合我們 一、強制…

android rn 和webview,RN Webview與Web的通信與調試

React Native Version:0.51RN 在 0.37 版本中加入了WebView功能&#xff0c;所以想要在使用WebView,版本必須>0.37&#xff0c;發送的 message 只能是字符串&#xff0c;所以需要將其他格式的數據轉換成字符串&#xff0c;在接收到后再轉換回去&#xff0c;其實直接用JSON.s…

數據庫完整性檢查

為了主動發現數據庫側頁損壞&#xff0c;保證數據庫邏輯和物理完整性&#xff0c;計劃每周六上午6點&#xff0c;針對生產主庫上的所有系統和用戶數據庫執行DBCC CHECKDB&#xff0c;將結果記錄到表中。以下為理論依據&#xff1a;SQL Server數據庫可以檢測出頁損壞&#xff0c…