Hibernate使用註解對映取代對映檔案
在編寫hibernate的時候,需要將實體類對映到資料庫中的表。通常需要一個配置檔案(hibernate.cfg.xml),一個實體類(XX.Java),還有一個對映檔案(XX.hbm.xml)。從JAVA5.0之後,可以利用註解來簡化配置。簡單來說就是不再需要對映檔案了,hibernate需要的元資料(metadata)通過註解實體類就行了。
下面是一個簡單的基於註解對映的Hibernate Hello World專案:
用到的工具和技術:1.Eclipse4.2.2
2.Maven 3
3.Hibernate 4.2.2.Final
4.JPA
首先是專案的整體
專案的依賴(pom.xml):
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- <dependency>
-
<groupId>org.hibernate
- <artifactId>hibernate-core</artifactId>
- <version>4.2.2.Final</version>
- </dependency>
- </dependencies>
JPA jar包在hibernate3.6之後被放入hibernate-core包中。
Hibernate的配置檔案(hibernate.cfg.xml):
- <?xmlversion='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>
- <!-- Database connection settings -->
- <propertyname="connection.driver_class">com.mysql.jdbc.Driver</property>
- <propertyname="connection.url">jdbc:mysql://localhost:3306/test</property>
- <propertyname="connection.username">username</property>
- <propertyname="connection.password">password</property>
- <!-- SQL dialect -->
- <propertyname="dialect">org.hibernate.dialect.MySQLDialect</property>
- <!-- Echo all executed SQL to stdout -->
- <propertyname="show_sql">true</property>
- <propertyname="format_sql">true</property>
- <!-- Drop and re-create the database schema on startup -->
- <propertyname="hbm2ddl.auto">update</property>
- <mappingclass="org.hibernate.test.tutorial.Person"/>
- </session-factory>
- </hibernate-configuration>
注意:需要在Mysql資料庫中建立一個test資料庫 CREATE DATABASE test
一個簡單的實體類:
- package org.hibernate.test.tutorial;
- import java.io.Serializable;
- import java.util.Date;
- import javax.persistence.Column;
- import javax.persistence.Entity;
- import javax.persistence.GeneratedValue;
- import javax.persistence.GenerationType;
- import javax.persistence.Id;
- import javax.persistence.Table;
- import javax.persistence.Temporal;
- import javax.persistence.TemporalType;
- @Entity
- @Table(name="T_PERSONS")
- publicclass Person implements Serializable {
- privatestaticfinallong serialVersionUID = 1L;
- private Long id;
- private String name;
- privatedouble age;
- private Date birth;
- @Id
- @GeneratedValue(strategy=GenerationType.AUTO)
- @Column(name="ID",unique=true)
- public Long getId() {
- return id;
- }
- @SuppressWarnings("unused")
- privatevoid setId(Long id) {
- this.id = id;
- }
- @Column(name="NAME",length=20)
- public String getName() {
- return name;
- }
- publicvoid setName(String name) {
- this.name = name;
- }
- @Column(name="AGE")
- publicdouble getAge() {
- return age;
- }
- publicvoid setAge(double age) {
- this.age = age;
- }
- @Temporal(TemporalType.DATE)
- @Column(name="BIRTH_DATE")
- public Date getBirth() {
- return birth;
- }
- publicvoid setBirth(Date birth) {
- this.birth = birth;
- }
- }
注意需要在Hibernate配置檔案中註冊該實體類: <mapping class="org.hibernate.test.tutorial.Person" />
最後編寫一個執行程式:
- publicstaticvoid main( String[] args )
- {
- SessionFactory factory = new Configuration().configure().buildSessionFactory();
- Session session = factory.openSession();
- session.beginTransaction(); // 開啟事務
- try{
- Person p = new Person();
- p.setName("Benson");
- p.setAge(22);
- p.setBirth(new Date());
- session.save(p);
- } catch(Exception e) {
- e.printStackTrace();
- session.getTransaction().rollback(); // 回滾事務
- }
- session.getTransaction().commit(); // 提交事務
- }
執行之後,可以在Ecilpse控制檯觀察到Hibernate為我們自動生成的格式化後的SQL:
- Hibernate:
- insert
- into
- T_PERSONS
- (AGE, BIRTH_DATE, NAME)
- values
-
相關推薦
Hibernate使用註解對映取代對映檔案
在編寫hibernate的時候,需要將實體類對映到資料庫中的表。通常需要一個配置檔案(hibernate.cfg.xml),一個實體類(XX.Java),還有一個對映檔案(XX.hbm.xml)。從JAVA5.0之後,可以利用註解來簡化配置。簡單來說就是不再需要對映檔案了,hibernate需要的元資料(
hibernate註解版關聯對映Many-to-One/Many-to-Many等&異常處理
應用例項: 一對多和多對一: warning.class 控制 @JsonIgnore@ManyToOne(cascade={CascadeType.MERGE})@JoinColumn(name = "from_id")private User sende
hibernate註解版關聯對映 詳解
@ManyToOne表示一個多對一的對映,該註解標註的屬性通常是資料庫表的外來鍵 optional:是否允許該欄位為null,該屬性應該根據資料庫表的外來鍵約束來確定,預設為true fetch:表示抓取策略,預設為FetchType.EAGER cascade:表示預設的級聯操作策略,可以指定為AL
Hibernate學習(3) (繼承對映,配置檔案和註解版)
這篇blog準備寫怎樣在Hibernate中反應記憶體物件之間的繼承關係.我們知道,記憶體物件之間是可以有繼承關係的,但是在資料庫中,我們繼承神馬的都是浮雲,不存在的.那麼怎麼辦呢?Hibernate提供了繼承關係對映!(其實就是幫你把原來的一個類以一種特定的方
Hibernate---實體配置(對映)檔案詳解 例如:User.hbm.xml檔案
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" &n
Hibernate---實體配置(對映)檔案詳解 例如:User.hbm.xml檔案
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "
兩種配置Servlet的IP地址對映:1註解、2配置檔案
1.建立專案 建立 servlet_test 動態web專案。 建立時點選 next, 勾選如下: 2.建立 test.java類 test.java 內容: 第一種:註解 – 設定IP地址對映
Hibernate 註解對映
工作中遇到hibernate對映的一些問題,這裡總結一下 (特別是測試時,許多資料並不能有效關聯。所以@NotFound 很重要) 一,假設有2張表user,company 我們知道,一個使用者屬於一個公司。那麼我們這麼建立Model //使用者 public class Use
Hibernate註解對映欄位的位置到底應該放在屬性還是方法上
現在我們對於專案中大量使用@Entity註冊在類頭上,將一個類宣告為一個實體bean(即一個持久化POJO類) ,@Table註冊在類頭上,註解聲明瞭該實體bean對映指定的表,來體現實體與表的這種對映關係。 對於屬性欄位和表的欄位關係對應的註解屬性的位置,一般我們採用以下兩種方式: 第一種:
Hibernate註解對映聯合主鍵的三種主要方式
聯合主鍵用Hibernate註解對映方式主要有三種: 第一、將聯合主鍵的欄位單獨放在一個類中,該類需要實現java.io.Serializable介面並重寫equals和hascode,再將該類註解為@Embeddable,最後在主類中(該類不包含聯合主鍵類中的欄位)儲存
[Hibernate]註解/關係對映以及關係測試用例
基本註解package OneToOneSingle; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; impor
前幾天用AnnotationSessionFactoryBean 註解方式代替*.hbm.xml時掃描對映實休檔案後報錯
吐操一下.Hibernate真心配置麻煩.不是VO. 是sessionFactory hibernate3.5以前的版本使用註解使用hibernate-annotations.jar以及ejb-pe
Hibernate註解方式對映
JPA:Java persistence APIJPA註解是JavaEE的標準和規範JPA是標準介面,Hibernate是實現,優先使用JPA註解。一:類級別註解1:@Entity對映實體類name屬性對應資料庫中的表(一般不寫通過@Table寫)注意:使用@Entity時必
hibernate多對多對映拆成2個一對多對映(註解)
hibernate的many to many確實很是方便我們處理實體和集合間的關係,並可以通過級聯的方法處理集合,但有的時候many to many不能滿足我們的需要,比如 使用者<--->選課,典型的多對多關係,一般情況下,會生成 course_user(course_id,user_id);
用hibernate+註解實現各種關係對映
本文轉自:http://blog.csdn.net/bigtree_3721/article/details/42343639 基本環境準備 我們先來看看一個具體的JPA工程示例。要執行這個示例,我們需要如下的類庫和軟體安裝配置好:
hibernate 註解方式配置實體的對映
Hibernate註解1。@Entity(name="EntityName")必須,name為可選,對應資料庫中一的個表2、@Table(name="",catalog="",schema="")可選,通常和@Entity配合使用,只能標註在實體的class定義處,表示實體
Hibernate - 繼承關聯關係對映
對於面向物件的程式設計語言而言,繼承和多型是兩個最基本的概念。Hibernate 的繼承對映可以理解持久化類之間的繼承關係。例如:人和學生之間的關係。學生繼承了人,可以認為學生是一個特殊的人,如果對人進行查詢,學生的例項也將被得到。 Hibernate支援三種繼承對映策略:
從零打造線上網盤系統之Hibernate配置O/R對映
歡迎瀏覽Java工程師SSH教程從零打造線上網盤系統系列教程,本系列教程將會使用SSH(Struts2+Spring+Hibernate)打造一個線上網盤系統,本系列教程是從零開始,所以會詳細以及著重地闡述SSH三個框架的基礎知識,第四部分將會進入專案實戰,如果您已經對SSH框架有所掌握,那麼可以直接瀏
使用檔案對映檢視讀取檔案
通常情況的檔案操作使用open、read、write,除了這種方式,還可以使用檔案對映檢視。 讀取檔案的前10個位元組: #include <stdio.h> #include <Windows.h> int main() { HANDLE l_hFileHan
SSM 生成mapper中xml檔案:未能解析對映資源:“檔案巢狀異常
錯誤日記我就網上隨便找個貼著: 錯誤一: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path res