Hibernate入門一
阿新 • • 發佈:2018-08-26
不存在 () username format create XML 持久 bject ava 什麽是Hibernate
Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,是一個關系數據庫ORM框架。
Hibernate可以自動生成SQL語句,自動執行,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。 (來自百度百科)
什麽是ORM
ORM是Object Relational Mapping的簡寫,是一種程序技術,它實現了對象模型和關系模型之間的轉換。
從理論效果上來說,它其實創建了一個可在編程語言裏使用的“虛擬對象數據庫”。
主流的ORM框架
1.JPA(JAVA Persistence API):通過JDK 5.0註解或XML描述對象-關系表的映 射關系(只有接口規範)
2.Hibernate:流行ORM框架,通過對象-關系映射配置,可以完全脫離底層SQL
3.MyBatis 本是apache的一個開源項目 iBatis,支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架
4.Apache DBUtils 、Spring JDBCTemplate
Hibernate優點
1.實現了對JDBC的封裝,大大簡化了持久層代碼繁瑣的重復性代碼
2.簡化了編碼的工作
3.使用反射的機制
4.因為是一個輕量級的框架,性能非常好
初體驗
準備工作
??1.導包
??2.編寫JavaBean
??3.配置*.hbn.xml
??4.配置hibernate.cfg.xml
1.導包 核心包 必須包 驅動包 2.編寫JavaBean create database hibernate; use hibernate; create table t_user( id int auto_increment primary key, username varchar(20), password varchar(20) ); public class User { private int uid; private String username; private String password; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User{" + "uid=" + uid + ", username=‘" + username + ‘\‘‘ + ", password=‘" + password + ‘\‘‘ + ‘}‘; } } 3.配置*.hbn.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!--配置類和表的對應關系--> <!-- name:全類名 table:表名 --> <class name="cn.robin.hibernate.demo01.User" table="tb_user"> <!-- 要求實體類有唯一值 要求表中有一個屬性有唯一值 --> <id name="uid" column="uid"> <!--native表示主鍵自動增長--> <generator class="native" /> </id> <!--配置其他屬性--> <property name="username" column="username" /> <property name="password" column="password" /> </class> </hibernate-mapping> 4.配置核心文件 <?xml version="1.0" encoding="UTF-8" ?> <!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 元素用於配置Hibernate中的屬性 鍵:值 --> <!-- hibernate.connection.driver_class : 連接數據庫的驅動 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- hibernate.connection.url : 連接數據庫的地址,路徑 --> <property name="hibernate.connection.url">jdbc:mysql///hibernate</property> <!-- hibernate.connection.username : 連接數據庫的用戶名 --> <property name="hibernate.connection.username">robin</property> <!-- hibernate.connection.password : 連接數據庫的密碼 --> <property name="hibernate.connection.password">robin</property> <!--配置hibernate(可選)--> <!--有SQL語句輸出--> <property name="hibernate.show_sql">true</property> <!--對語句進行格式化--> <property name="hibernate.format_sql">true</property> <!-- hibernate創建表的配置 update:如果不存在表,則創建,如果存在,則更新 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 配置數據庫方言 MySql:limit Oracle:rownum --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 配置本地線程綁定session--> <property name="hibernate.current_session_context_class">thread</property> <!--把映射文件加載到核心配置文件中--> <mapping resource="cn/robin/hibernate/demo01/User.hbm.xml" /> </session-factory> </hibernate-configuration> <!-- 映射配置文件 1.映射配置文件的位置沒有任何要求 2.映射配置文件標簽中name屬性都是實體類的名稱 column是表中字段的名稱 class中name屬性的值是實體類的全路徑 3.id和property標簽中的column屬性可以省略,默認是name屬性的值 4.property標簽中的type屬性,用來設置字段的類型,自動對應類型 --> <!-- 核心配置文件 1.必須寫在session-factory標簽中 2.名稱和位置是固定的 src hibernate.cfg.xml -->
接下來就是測試了
public void demo() { // 加載hibernate核心配置文件 Configuration configuration = new Configuration(); configuration.configure(); // 創建SessionFactory封裝對象 // 這個關系中,可能會根據映射關系創建表 SessionFactory sessionFactory = configuration.buildSessionFactory(); // 使用SessionFactory創建Session // 類似Connection Session session = sessionFactory.openSession(); // 開啟事務 Transaction transaction = session.beginTransaction(); // crud User user = new User(); user.setUsername("robin"); user.setPassword("123"); // 調用session進行添加操作 session.save(user); // 提交事務 transaction.commit(); // 關閉資源 session.close(); sessionFactory.close(); }
Hibernate入門一