博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate注解Annotation
阅读量:5238 次
发布时间:2019-06-14

本文共 3742 字,大约阅读时间需要 12 分钟。

大部分仍然使用javax.persistence中的注解,有些Hibernate扩展的注解,在org.hibernate.annotations包中,如GenericGenerator.

使用hibernate.cfg.xml中配置的事务,使用<mapping class="完整类名"/>加载注解的持久化类。Hibernate中可以混合使用注解和xml映射文件。

注解后不能使用Configuration类,而是AnnotationConfiguration类初始化Hibernate

1         SessionFactory sFactory=new AnnotationConfiguration() 2                               .configure().buildSessionFactory(); 3         Session session=sFactory.getCurrentSession(); 4         Transaction tx=session.beginTransaction(); 5         User user=new User(); 6         user.setUsername("tazi2"); 7         user.setPassword("12345"); 8         session.save(user); 9         tx.commit();

注解种类:

@Entity @Table @Id @Column @Transient(非持久化属性) @Temporal(时间精度) @ManyToOne @... 

在类前

@NamedQueries({@NamedQuery(name="getById",query="from User where id=:id")})

使用方法与在xml配置的命名查询相同

1         Query query=session.getNamedQuery("getById"); 2         query.setInteger("id", 4); 3         User user=(User)query.uniqueResult(); 4         System.out.println(user.getUsername());

@Version乐观锁 @Cache二级缓存 @Filters @FilterDef 

@GeneratedValue默认为AUTO,根据底层数据库决定。还可以用Hibernate扩展的@GenericGenerator

例子:

package com.tazi.domin; import java.sql.Timestamp; import java.util.Date; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.Lob; import javax.persistence.ManyToOne; /**  * Product entity. @author MyEclipse Persistence Tools */ @Entity public class Product implements java.io.Serializable {
// Fields @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer id; @Column(length=20,nullable=false) private String name; @Column(scale=2) private Float price; @Lob private String description; @ManyToOne @JoinColumn(name="CATEGORY_ID")//,referencedColumnName="ID" private Category category; // Constructors public Category getCategory() {
return category; } public void setCategory(Category category) {
this.category = category; } //... Property accessors }

Category.java

1 package com.tazi.domin;  2  3 import java.util.HashSet;  4 import java.util.Set;  5  6 import javax.persistence.CascadeType;  7 import javax.persistence.Column;  8 import javax.persistence.Entity;  9 import javax.persistence.FetchType; 10 import javax.persistence.GeneratedValue; 11 import javax.persistence.GenerationType; 12 import javax.persistence.Id; 13 import javax.persistence.OneToMany; 14 15 /** 16  * Category entity. @author MyEclipse Persistence Tools 17  */ 18 @Entity 19 public class Category implements java.io.Serializable {
20 21 // Fields 22 @Id 23 @GeneratedValue(strategy=GenerationType.IDENTITY) 24 private Integer id; 25 @Column 26 private String name; 27 private String description; 28 @OneToMany( 29 cascade={CascadeType.ALL}, 30 fetch=FetchType.EAGER, //使用List不能使用eager,使用Set可以 31 mappedBy="category" 32 ) 33 private Set
products = new HashSet(0); 34 35 // Constructors 36 37 /** default constructor */ 38 public Category() {
39 } 40 /** minimal constructor */ 41 public Category(String name) {
42 this.name = name; 43 } 44 /** full constructor */ 45 public Category(String name, String description, Set products) {
46 this.name = name; 47 this.description = description; 48 this.products = products; 49 } 50 //... Property accessors 51 }

转载于:https://www.cnblogs.com/tazi/archive/2011/12/27/2303833.html

你可能感兴趣的文章
BootScrap
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
selenium学习中遇到的问题
查看>>
[Linux]PHP-FPM与NGINX的两种通讯方式
查看>>
Java实现二分查找
查看>>
架构图-模型
查看>>
黑马程序员_Java基础枚举类型
查看>>
UIImage 和 iOS 图片压缩UIImage / UIImageVIew
查看>>
django ORM创建数据库方法
查看>>
php7 新特性整理
查看>>
RabbitMQ、Redis、Memcache、SQLAlchemy
查看>>
知识不是来炫耀的,而是来分享的-----现在的人们却…似乎开始变味了…
查看>>
口胡:[HNOI2011]数学作业
查看>>
数据库锁机制及乐观锁,悲观锁的并发控制
查看>>
03 线程池
查看>>
手机验证码执行流程
查看>>
设计模式课程 设计模式精讲 2-2 UML类图讲解
查看>>
Silverlight 的菜单控件。(不是 Toolkit的)
查看>>
初识lua
查看>>