1. 程式人生 > >Hibernate中使用註解

Hibernate中使用註解

Annotation在專案中的使用越來越多,同樣hibernate中支援Annotation,如果在hibernate中使用註解,從而輕XML配置,從下面簡單的小例子加以說明。

1、實體類Emp.java

package com.yy.hibernate.model;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
// 實體類
public class Emp {

	private int id;
	private String name;

	@Id
	// 主鍵
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

}
2、hibernate.cfg.xml檔案
<!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="hibernate.connection.url">jdbc:mysql://127.0.0.1/hibernate</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hibernate.show_sql">true</property>
		<!-- <property name="hibernate.hbm2ddl.auto">update</property> -->
		<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
		
	<mapping class="com.yy.hibernate.model.Emp"/> <!--使用註解-->
	
	</session-factory>
</hibernate-configuration>
3、客戶端
public class EmpTest {

	public static void main(String[] args) {
		
		//使用註解
		Configuration config = new AnnotationConfiguration().configure();
		SessionFactory factory = config.buildSessionFactory();
		
		Session session = factory.openSession();
		
		Emp emp = new Emp();
		emp.setId(11);
		emp.setName("yy");
		
		try{
			session.beginTransaction();
			session.save(emp);
			session.getTransaction().commit();
		}catch(Exception e){
			session.getTransaction().rollback();
		}finally{
			session.close();
			factory.close();
		}
	}
}
注意:

在該簡單示例中,實體類和資料庫表是對應的,欄位也是統一的。

如果表名和實體類不一致,則需加如下註解:

@Table(name="_emp")
如果資料庫表中欄位名和實體類中欄位名保持相同,預設在getXXX方法上加如下註解:
@Basic

如果資料庫表中欄位名和實體類中欄位名不一致,則需在getXXX方法上加如下註解:

@Column(name="_name")
	public String getName() {
		return name;
	}

如果某個欄位不想持久化,則則getXXX方法上加如下註解:

@Transient
	public String getName() {
		return name;
	}
對應的,如果在XML配置中不想持久化,則需要在hbm.xml檔案中不配置該欄位即可。

如果是列舉型別,則需要在getXXX方法上加如下註解:

@Enumerated(EnumType.ORDINAL)
	public Level getLevel() {
		return level;
	}
此時EnumType.ORDINAL對映欄位為整形,如果為EnumType.STRING則對映為varchar型別。



相關推薦

Hibernate的一對一註解配置

before code uil ransac ges package open cnblogs 一對一 Card類 package cn.OneToOne2017109.entity; import javax.persistence.*; /** * Creat

Hibernate,mappedBy和註解@JoinColumn的對比

mappedBy 我們知道,mappedBy用於指定具有雙向關係的兩個實體中。哪個實體是被關聯處理的。它有如下四個特點: 1.只有OneToOne,OneToMany,ManyToMany上才有mappedBy屬性,ManyToOne不存在該屬性; [email&#

關於hibernate@Transient註解使用的一點心得

   (例): @Transient表示該屬性並非一個到資料庫表的欄位的對映,ORM框架將忽略該屬性. 如果一個屬性並非資料庫表的欄位對映,就務必將其標示為@Transient,否則,ORM框架預設其

Hibernate JPA註解解釋 @Json Jackson常用

一般情況下使用JSON只使用了java物件與字串的轉換,但是,開發APP時候,我們經常使用實體類來做轉換;這樣,就需要用到註解;    Jackson預設是針對get方法來生成JSON字串的,可以使用註解來做一些特殊用途;常見的使用如下: 1、@Transient 對

hibernate實體類註解

一、JPA通用策略生成器 通過annotation來對映hibernate實體的,基於annotation的hibernate主鍵標識為@Id, 其生成規則由@GeneratedValue設定的.這裡的@id和@GeneratedValue都是JPA的標準用法, JPA提供四種標準用法,由

Hibernatepojo註解介紹

原文地址:http://blog.sina.com.cn/s/blog_8d8425f301014dls.html 1.設定Pojo為實體 [email protected] //標識這個pojo是一個jpa實體     02.public class Use

Hibernate使用註解

Annotation在專案中的使用越來越多,同樣hibernate中支援Annotation,如果在hibernate中使用註解,從而輕XML配置,從下面簡單的小例子加以說明。 1、實體類Emp.java package com.yy.hibernate.model;

hibernate如何用Annotion註解設定model的欄位不持久化

public final static int DELETESTATUS_YES=1; public final static int DELETESTATUS_NO=0; @Id @GeneratedValue(

Hibernate使用@Lob 註解儲存String[] 問題

Hibernate中使用@Lob 註解儲存String[] 問題在Hibernate註解中如何你想儲存一個欄位為String陣列型別,如果你想嘗試儲存為clob型別的話,一般情況下為定義為:@Entit

Hibernate使用JPA註解@OneToMany的cascade級聯標籤

Parent-Child關係 在介紹級聯標籤之前要說一下@OneToOne、@OneToMany、@ManyToOne、@ManyToMany的父子關係(或者母子關係T.T)。 @OneToOne和@ManyToMany中:可自行選擇 @OneToMany

註解解決Hibernateshould be mapped with insert="false" updatable=false

參考:http://blog.sina.com.cn/s/blog_6829be5c01016pjj.html 在使用註解時,會遇到雙向一對多和多對一問題: 例如order與orderitem: 在order中: /*        * @OneToMany: 指明Or

hibernate設定欄位不持久化 註解

hibernate中Modle中的有些屬性不想建立表是在資料庫中產生欄位儲存資料,當這種需求是我們可以設定@transient表示透明的當設定此屬性是在建立資料庫是可以對此屬性忽略,在本例中模擬了一個班級表表名為MyClass 屬性有資料庫id 班級名稱 班級老師 老師

Hibernate使用JPA(註解)配置物件關係對映

java中註解也是一大特點,平時進行單元測試時我們用過@Test註解進行測試 JPA就是java專門針對持久層框架進行設計的一套規範 JPA:Java Persistence API,其實它也就是一堆介面,就想JDBC一樣,不同的框架只要遵循這同一套規範就可以在java環境

Hibernate的五大核心類和接口

session 回滾 開啟事務 核心 避免 事務 提交 jdbc 一級緩存 Hibernate中的五大核心類和接口 Configuration(類) : 加載配置文件hibernate.cfg.xml文件中的配置信息,從而得到: 1).hibernate的

Hibernate的條件查詢完畢類

hiberna 產生 content div ber ont size 查詢 criteria Hibernate中的條件查詢有下面三個類完畢: 1、Criteria:代表一次查詢 2、Criterion:代表一個查詢條件 3、Restrictions:產生

(七)Hibernate使用JDBC

alt work 方法 代碼 cep cti 一個 sdm admin 在hibernate中獲取connection數據庫連接有兩種方法:(操作數據庫常用這種方法) 1. session.doReturningWork 返回一個對象,適用於查詢方法 2. ses

(十二)Hibernate的多表操作(1):單向多對一

art 保存 int gen round t對象 情況 映射文件 拋出異常 由“多”方可知“一”方的信息,比如多個員工使用同一棟公寓,員工可以知道公寓的信息,而公寓無法知道員工的信息。 案例一: pojo類 public class Department {

hibernatehql語句list和iterate區別

每次 hibernate 寫入 所有 讀取 條件 iter 查詢 hql 1.使用list()方法獲取查詢結果,每次發出一條語句,獲取全部數據。2.使用iterate()方法獲取查詢結果,先發出一條SQL語句用來查詢滿足條件數據的id,然後依次按照這些id查詢記錄,也就是要

Hibernateget()和load()的區別

factory all htm on() 被調用 容易 transacti rip con Hibernate中根據Id單條查詢獲取對象的方式有兩種,分別是get()和load(),來看一下這兩種方式的區別。 1. get() 使用get()來根據ID進行單條查詢:

(十四)Hibernate的多表操作(4):單向一對一

odin utf-8 lds () clas string 方式 rdb style 案例一: 註解方式實現一對一 UserBean.java package bean; import java.io.Serializable; import javax.pers