Hibenate-注解
来源:互联网 发布:知否什么时候上映 湖南 编辑:程序博客网 时间:2024/06/07 03:25
注解
三类注解
注解含义作用
ORM标准规范JPA—per
@Table(name=”“) 不管name一不一样,name都写出来吧,做为一种规范。
User.java
@Entity@Table(name = "User")// @Proxy(lazy=false) 默认true 。public class User implements java.io.Serializable { private static final long serialVersionUID = 5528168703353159357L; // Fields private Integer id; private String name;// 用户名 private String password;// 密码 private String telephone;// 电话 private String username;// 姓名 @Column(name = "ISADMIN") private String isadmin;// 是否是管理员 private String msg; // 一个用户可以注册多个房屋,一对多 private Set<House> houses = new HashSet<House>(); @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, targetEntity = House.class, mappedBy="Users") //那个类中House,与我相关的那个属性Users //@mappedBy 属性简单理解为设定为主表 public Set<House> getHouses() { return houses; } public void setHouses(Set<House> houses) { this.houses = houses; } @Transient // 临时。 public String getMsg() { return msg; } @Id // IDENTITY==MYSQL SEQUENCE==ORACLE @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_") @SequenceGenerator(name = "seq", sequenceName = "SEQ_ID", allocationSize = 3) // 这个才是序列的名字.all...是间距 @Column(name = "ID") public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Column(name = "ISADMIN") // 在每一个get加上也行。 public String getIsadmin() { return isadmin; } public void setIsadmin(String isadmin) { this.isadmin = isadmin; }
House.java
@Entitypublic class House implements java.io.Serializable { // Fields private Integer id; private String title;// 标题 private String description;// 描述 private Double price;// 价格 private Date pubdate;// 发布时间 private Double floorage;// 面积 private String contact;// 联系人 private User users; // Constructors /** default constructor */ public House() { } @ManyToOne(targetEntity = User.class, fetch = FetchType.LAZY) @JoinColumn(name = "USER_ID") public User getUsers() { return users; } public void setUsers(User users) { this.users = users; } @Id // IDENTITY==MYSQL SEQUENCE==ORACLE @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_") @SequenceGenerator(name = "seq", sequenceName = "SEQ_ID", allocationSize = 3) // 这个才是序列的名字.all...是间距 @Column(name = "ID") public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Double getPrice() { return price; } public void setPrice(Double price) { this.price = price; } public Date getPubdate() { return pubdate; } public void setPubdate(Date pubdate) { this.pubdate = pubdate; } public Double getFloorage() { return floorage; } public void setFloorage(Double floorage) { this.floorage = floorage; } public String getContact() { return contact; } public void setContact(String contact) { this.contact = contact; }
hibernate.cfg.xml
由映射文件改为注解之后就要在哈姆雷特的配置文件中由resource更改为CLASS。
<mapping class="cn.jbit.houserent.entity.House" /> <mapping class="cn.jbit.houserent.entity.User" />
Test.java
public class AnnoTest { public static void main(String[] args) { Transaction tx = null; try { tx = HibernateSessionFactory.getSession().beginTransaction(); User u=new User(); u.setName("注解"); u.setPassword("1231212"); House h=new House(); h.setTitle("注解房屋"); u.getHouses().add(h);//一 h.setUsers(u);//多 //一 有级联操作,保存一方就行了。 HibernateSessionFactory.getSession().save(u); tx.commit(); } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (tx != null) { tx.rollback(); } }
多对多
Employee.java
package common;import java.util.HashSet;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.Id;import javax.persistence.ManyToMany;import javax.persistence.Table;/** * Employee entity. @author MyEclipse Persistence Tools */@Entity@Table(name = "EMPLOYEE", schema = "SCOTT")public class Employee implements java.io.Serializable { // Fields private Integer empid; private String empname; private Set<Project> projects = new HashSet<Project>(0); // Constructors /** default constructor */ public Employee() { } /** minimal constructor */ public Employee(Integer empid, String empname) { this.empid = empid; this.empname = empname; } /** full constructor */ public Employee(Integer empid, String empname, Set<Project> projects) { this.empid = empid; this.empname = empname; this.projects = projects; } // Property accessors @Id @Column(name = "EMPID", unique = true, nullable = false, precision = 6, scale = 0) public Integer getEmpid() { return this.empid; } public void setEmpid(Integer empid) { this.empid = empid; } @Column(name = "EMPNAME", nullable = false, length = 100) public String getEmpname() { return this.empname; } public void setEmpname(String empname) { this.empname = empname; } @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "employees") public Set<Project> getProjects() { return this.projects; } public void setProjects(Set<Project> projects) { this.projects = projects; }}
Project.java
package common;import java.util.HashSet;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.JoinTable;import javax.persistence.ManyToMany;import javax.persistence.Table;/** * Project entity. @author MyEclipse Persistence Tools */@Entity@Table(name = "PROJECT", schema = "SCOTT")public class Project implements java.io.Serializable { // Fields private Integer proid; private String proname; private Set<Employee> employees = new HashSet<Employee>(0); // Constructors /** default constructor */ public Project() { } /** minimal constructor */ public Project(Integer proid, String proname) { this.proid = proid; this.proname = proname; } /** full constructor */ public Project(Integer proid, String proname, Set<Employee> employees) { this.proid = proid; this.proname = proname; this.employees = employees; } // Property accessors @Id @Column(name = "PROID", unique = true, nullable = false, precision = 6, scale = 0) public Integer getProid() { return this.proid; } public void setProid(Integer proid) { this.proid = proid; } @Column(name = "PRONAME", nullable = false, length = 100) public String getProname() { return this.proname; } public void setProname(String proname) { this.proname = proname; } @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinTable(name = "PROEMP", joinColumns = { @JoinColumn(name = "RPROID") }, inverseJoinColumns = { @JoinColumn(name = "REMPID") }) public Set<Employee> getEmployees() { return this.employees; } public void setEmployees(Set<Employee> employees) { this.employees = employees; }}
注解中的命名查询
在那个类的最上头添加上就可以了。。。感觉没啥意义。。
@NamedQuery(name = "testNamedQuery", query = "from Dept d left join d.emps e where d.deptno = :deptno")
Test.java
HibernateSessionFactory.getSession() .getNamedQuery("testNamedQuery") .setProperties(null) .list();
SQL命名查询
@NameNativeQuery(name = "queryName", query = "sql...", resultSetMapping = "mapping")@sqlResultSetMapping(name = "mapping",entities = { @EntityResult(entityClass = District.class), @EntityResult(EntityClass = Street.class) })
1 0
- Hibenate-注解
- Hibenate @Table 注解
- hibenate
- Struts和Hibenate
- hibenate+struts学习笔记
- Hibenate JPA资料
- hibenate集合映射
- hibenate-mapping 出错
- hibenate的面试总结.
- hibenate的面试总结.
- Hibenate中多表关联
- Hibenate技术详解
- Hibenate学习笔记
- hibenate 批量删除 分析,,,
- hibenate配置文件异常
- hibenate二级缓存攻略
- hibenate配置链接池
- Hibenate 课堂笔记
- POj 1580(字符串处理)
- python 抓取网页数据
- Lua语法学习(一)
- 关于python csv文件打开错误:_csv.Error: line contains NULL byte
- leetcode No201. Bitwise AND of Numbers Range
- Hibenate-注解
- 趣学 C 语言(十三)—— 标准输入输出重定向
- Java 读取properties配置文件
- C++的标准命名空间使用
- ORACLE 11G ASM DISKGROUP COMPATIBILITY
- 异常和随机整数的结合题
- java09--线程
- iOS开发中UITableView和UITableViewCell的几种样式
- C的读书笔记 --c语言概述