hibernate是開源的,用於封裝數據訪問層的組件,稱爲:數據訪問層框架(持久層框架)
寫一個入門案例,體現hibernate的工作方式!明白hibernate作用及其程序結構!
例子:用Hibernate實現增刪查改案例
環境:
IDE工具:Myeclipse ,mysql
所需jar包:
hibernate的jar:
mysql所需jar(程序用到mysql數據庫):
mysql-connector-java-5.1.6-bin.jar
步驟:
1.創建一個web項目
2.導入jar包
3.建數據庫和表文件
4.建hibernate和數據庫的關聯配置文件hibernate.cfg.xml
5.建立和數據庫關聯的POJO類User.java
6.建立數據庫和User.java關聯的配置文件User.hbm.xml
7.在hibernate.cfg.xml中關聯映射文件
8.寫測試類(TestHibernate)
項目最後截圖:
開始:
1.創建一個項目
還是截圖,創建的項目名稱爲HibernateSpExa
2.導入所需jar包
導入所需jar包到項目的lib文件夾下(或者通過Build Path導入也可,這裏需要hibernate和Mysql的jar包)
3.建數據庫和表文件
在WebRoot下面建立db.sql文件,在裏面建立下圖所示內容,並關聯Mysql運行建立數據庫和表
4.建hibernate和數據庫的關聯配置文件hibernate.cfg.xml
主要是配置連接數據庫:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 數據庫連接信息 -->
<property name="connection.url">
jdbc:mysql://localhost:3306/test
</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- hibernate配置 -->
<!-- 方言配置,用於配置對哪個的SQL語句 -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- 將Sql打印到控制檯,一般用於數據庫調優 -->
<property name="show_sql">true</property>
<!-- 打印出的SQL語句以縮進的形式打印出來 -->
<property name="format_sql">true</property>
</session-factory>
</hibernate-configuration>
5.建立和數據庫關聯的POJO類User.java
POJO類
package com.TodayMZ.hiber.po;
public class User {
private Integer id;
private String loginName;
private String password;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
6.建立數據庫和User.java關聯的配置文件User.hbm.xml
配置User.java與數據庫字段關聯的字段
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.TodayMZ.hiber.po.User" table="t_user">
<id name="id" type="integer" column="t_id">
<generator class="identity"></generator>
</id>
<property name="loginName" type="string" column="t_login_name">
</property>
<property name="password" type="string" column="t_password">
</property>
<property name="name" type="string" column="t_name">
</property>
</class>
</hibernate-mapping>
7.在hibernate.cfg.xml中關聯映射文件
(如圖配置文件)
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 數據庫連接信息 -->
<property name="connection.url">
jdbc:mysql://localhost:3306/test
</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!-- hibernate配置 -->
<!-- 方言配置,用於配置對哪個的SQL語句 -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!-- 將Sql打印到控制檯,一般用於數據庫調優 -->
<property name="show_sql">true</property>
<!-- 打印出的SQL語句以縮進的形式打印出來 -->
<property name="format_sql">true</property>
<!-- 在配置文件中關聯映射文件 -->
<mapping resource="com/TodayMZ/hiber/po/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
8.寫測試類(TestHibernate)
測試類主要用於測試hibernate的增刪查改功能!
hibernate封裝了SQL語句,只需要調用hibernate的API就可以實現增刪查改,比SQL語句簡便
增加save方法:package com.TodayMZ.hiber.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.TodayMZ.hiber.po.User;
public class TestHibernate {
@Test
public void test1(){
User user=new User();
user.setLoginName("todayMZ");
user.setName("today");
user.setPassword("1234");
Configuration conf=new Configuration();/*調用HibernateAPI,裝載Hibernate配置文件*/
conf.configure();/*裝載默認配置文件,所過指定則裝載conf.configure(new File("abc.xml"););*/
SessionFactory factory=conf.buildSessionFactory();/*創建SessionFactory*/
Session session=factory.openSession(); /*創建Session*/
Transaction tx=session.getTransaction();/*獲取事物*/
tx.begin(); /*開啓事物*/
session.save(user);/*插入數據*/
tx.commit(); /*提交事物*/
session.close();/*關閉事物*/
}
}
更改Update方法:
package com.TodayMZ.hiber.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.TodayMZ.hiber.po.User;
public class TestHibernate {
@Test
public void test1(){
User user=new User();
user.setId(1);
user.setLoginName("todayMZ2");
user.setName("today2");
user.setPassword("12345");
Configuration conf=new Configuration();
conf.configure();
SessionFactory factory=conf.buildSessionFactory();
Session session=factory.openSession();
Transaction tx=session.getTransaction();
tx.begin();
session.update(user);/*更改*/
tx.commit();
session.close();
}
}
查詢Query方法:
package com.TodayMZ.hiber.test;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.TodayMZ.hiber.po.User;
public class TestHibernate {
@Test
public void test1(){
Configuration conf=new Configuration();
conf.configure();
SessionFactory factory=conf.buildSessionFactory();
Session session=factory.openSession();
Transaction tx=session.getTransaction();
tx.begin();
//查詢語句
Query query=session.createQuery("from User");
List<User> userList=query.list();
for(User user :userList){
System.out.println(user.getId()+","+user.getLoginName()+","
+user.getName()+","+user.getPassword());
}
tx.commit();
session.close();
}
}
刪除delete方法:
package com.TodayMZ.hiber.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.TodayMZ.hiber.po.User;
public class TestHibernate {
@Test
public void test1(){
User user=new User();
user.setId(1);
Configuration conf=new Configuration();
conf.configure();
SessionFactory factory=conf.buildSessionFactory();
Session session=factory.openSession();
Transaction tx=session.getTransaction();
tx.begin();
session.delete(user);/*刪除*/
tx.commit();
session.close();
}
}
運行:
在Testhibernate類右鍵選擇Run As ---->JUnit Test,控制檯就會打印出當前執行的SQL語句和運行結果!
that's OK!
----------------------------------------我是分割線-------------------------------------------------
文章適合初學者,都是基礎知識(高手請繞道),給出了一個hibernate的執行基本結構。
給自己看,也給剛接觸的人兒看!
轉載請說明出處:http://blog.csdn.net/todaymz/article/details/8755401