hibernate是一個orm框架,主要方便開發者操作數據庫。
一個簡單的hibernate項目的主要流程:
(1):導入jar包
(2):編寫實體類
(3):編寫hibernate的配置文件
(4):對數據庫操作
(一):導入jar包
注意:如果使用註釋需要導入hibernate-annotations.jar和hibernate-commons-annotations.jar等jar包。
(二):編寫實體類。一個實體類在hibernate對應一個數據庫表,實體類需要有@Entity註釋表示是一個實體類。一個簡單的實體類可以理解成一個pojo類加上一些必須要的配置或者hibernate關聯
@Entity
@Table(name="tb_user")
public class user {
@Id
private String id;
private String name;
private String age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "user [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
說一下一下常用的註釋
@Entity 表示這是一個實體類,hibernate掃描需要根據這個註釋掃描
@Table(name=”tb_user”) 表示這個實體類對應hibernate中的tb_user表
@Id 表示這個屬性是主鍵
@Cloumn 可以指定屬性對應的列名,不寫默認爲屬性名
@Temporal(TemporalType.TIMESTAMP)日期註解,如果屬性對應數據庫的時間列需要用這個註解指定類型
(三):配置文件,需要配置一些連接數據庫的資源
<?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>
<!-- jdbc配置 -->
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.username">system</property>
<!-- hibernate.connection.password : 連接數據庫的密碼 -->
<property name="hibernate.connection.password">system</property>
<!-- hibernate.connection.url : 連接數據庫的地址,路徑 -->
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<!-- show_sql: 操作數據庫時,會 向控制檯打印sql語句 -->
<property name="show_sql">true</property>
<!-- format_sql: 打印sql語句前,會將sql語句先格式化 -->
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- hibernate.connection.autocommit: 事務自動提交 -->
<property name="hibernate.connection.autocommit">true</property>
<!-- 將Session與線程綁定=> 只有配置了該配置,才能使用getCurrentSession -->
<property name="hibernate.current_session_context_class">thread</property>
<!-- 引入ORM 實體類
-->
<mapping class="test.user"/>
</session-factory>
</hibernate-configuration>
(4):使用。加載主配置文件,建立一個sesion工廠類就可以獲取session進行操作
public class hiberTest {
public static void main(String[] args){
//加載配置文件
AnnotationConfiguration c = new AnnotationConfiguration();
c.configure("hibernate.cfg.xml");
//建立sesion工廠
SessionFactory sessionFactory = c.buildSessionFactory();
//打開連接
Session session = sessionFactory.openSession();
user user1 = new user();
user1.setAge("18");
user1.setId("1");
user1.setName("jack");
user user2 = new user();
user2.setAge("30");
user2.setId("2");
user2.setName("rose");
session.persist(user1);
session.persist(user2);
List<user> list = session.createQuery("from user ").list();
for(user s: list){
System.out.println(s);
}
}
}