您好,登錄后才能下訂單哦!
下載全套文件: hibernate-release-4.1.7.Final.zip
目錄結構
Documentation文件夾下是開發幫助文檔
Lib文件夾是開發使用的庫,其中該文件夾下面的required目錄是開發時必須導入的JAR文件;
Project文件夾是項目源碼文件
JDBC與Hibernate的比較:
Hibernate的初步配置部署:
1. 創建web項目
2. 添加響應需要的Hibernate的jar包
3. 創建Java Bean業務實體類
4. 創建實體類映射的配置文件:**.hbm.xml
5. 創建Hibernate的配置文件hibernate.cfg.xml
6. 創建測試類測試hibernate是否配置成功
實體類:UserInfo.java
public class UserInfo
{
private int userid;
private String userName;
private String userPwd;
private Date birthday;
//省略了屬性各種get和set方法
//創建含有id的構造函數
public UserInfo(int id)
{
this.userid=id;
}
public UserInfo(int userid, String userName, String userPwd, Date birthday)
{
super();
this.userid = userid;
this.userName = userName;
this.userPwd = userPwd;
this.birthday = birthday;
}
//無參的構造函數是必須要有的
public UserInfo()
{
}
}
實體類的配置文件UserInfo.hbm.xml
(配置文件盡量和實體類名字去的一致方便管理和實體類放在同一個包中)
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/HibernateMapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="entity"> //package包指定實體類的包
<class name="UserInfo" table="luser">
//name指定實體類名 table為數據庫中實體類對應的表名如果沒有指定就和類名一致
<id name="userid">
<generator class="native"/>
</id>
//id標識主鍵的字段 class=native標識自增長
<property name="userName" column=”name” />
//property指定屬性的字段,column可以指定數據庫中對應字段的名稱,如果沒有就和實體類的屬性名一致
<property name="userPwd" />
<property name="birthday" />
</class>
</hibernate-mapping>
Hibernate的配置文件hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/HibernateConfiguration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 顯示執行的sql語句 -->
<property name="show_sql">true</property>
<!-- 格式化sql語句 -->
<property name="format_sql">true</property>
<!-- 配置數據庫各種數據 -->
<!-- 配置數據庫本地語言 -->
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- 數據庫驅動 -->
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<!-- 數據庫url -->
<property name="hibernate.connection.url">jdbc:oracle:thin:@192.168.3.252:1521:orcl</property>
<!-- 配置數據庫的用戶名和密碼 -->
<property name="hibernate.connection.username">bam1</property>
<property name="hibernate.connection.password">bam1</property>
<!-- 設置數據定義語言操作的方式 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 加載對象關系映射文件 -->
<mapping resource="entity/UserInfo.hbm.xml"/>
</session-factory>
</hibernate-configuration>
測試類Test.java
添加一條數據:
public static void add()
{
//第一步:讀取Hibernate的配置文件 hibernamte.cfg.xml文件
Configurationcon=new Configuration().configure();
//第二步:創建服務注冊構建器對象,通過配置對象中加載所有的配置信息
ServiceRegistryBuilderregbulider=newServiceRegistryBuilder().applySettings(con.getProperties());
//創建注冊服務
ServiceRegistryreg=regbulider.buildServiceRegistry();
//第三步:創建會話工廠
SessionFactorysessionFactory=con.buildSessionFactory(reg);
//第四步:創建數據操作會話
Sessionsession=sessionFactory.openSession();
//創建對象
*/
UserInfohanhan=new UserInfo();
hanhan.setUserName("hanhan313");
hanhan.setUserPwd("123");
hanhan.setBirthday(new Date());
/*
//創建事物
Transactiontran=session.beginTransaction();
//保存數據
session.save(hanhan);
//提交事物
tran.commit();
//關閉對話
session.close();
}
查詢一條數據:
創建了session回話后
//查詢id為10的userinfo的用戶信息
UserInfouser=session.get(UserInfo.class,10);
更新一條數據:
首先查詢出數據
UserInfo user=session.get(UserInfo.class,10);
再對user進行數據修改后
再通過獲取到session回話
session.update(user)
刪除一條數據:
刪除數據時將需要刪除的id數據包裝成對象
比如:
UserInfouser=new UserInfo();
User.setUserId(10);
session.delete(user); //刪除時就會自動獲取到user中id進行刪除
hibernate的流程:
持久化JAVA類必須遵循的原則
1、為類的持久化字段聲明訪問方法(get/set),Hibernate對JavaBeans風格的屬性實行持久化。
2、實現一個默認的構造方法,這樣的話Hibernate就可以使用Constructor.newInstance()方法來實例化對象。
3、如果是集合類型的屬性,它的類型必須定義為集合的接口,例如:List、Set
4、提供一個標識屬性(Identifier property),如果沒有該屬性,一些功能不起作用,比如:級聯更新,session.saveOrUpdate()。
對象的狀態:
瞬時(transient):數據庫中沒有數據與之對應,超過作用域會被JVM垃圾回收器回收,一般是new出來且與session沒有關聯的對象。
持久(persistent):數據庫中有數據與之對應,當前與session有關聯,并且相關聯的session沒有關閉,事務沒有提交;持久對象狀態發生改變,在事務提交時會影響到數據庫(hibernate能檢測到)。
脫管(detached):數據庫中有數據與之對應,但當前沒有session與之關聯;托管對象狀態發生改變,hibernate不能檢測到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。