jpa

来源:互联网 发布:上海it外包 编辑:程序博客网 时间:2024/05/20 07:35

不是纯的jpa。。。。。      

 jpa和hibernate的区别:

 hibernate加载映射文件的时候是这样的:

  在hibernate.cfg.xml里面:  用的是resource,有其他的配置文件

<!-- 加载对象映射文件 --><mapping resource="hbm/RoleInfo.hbm.xml"/><mapping resource="hbm/UserInfo.hbm.xml"/>

而jpa是这样的:

 在hibernate.cfg.xml,这里用的是class,没有其他配置文件,实体类都是使用注解实现的。

<!-- 加载对象映射类 --><mapping class="com.hibernate.relation.entity.RoleInfo"/><mapping class="com.hibernate.relation.entity.UserInfo"/>

  hibernate.cfg.xml:

    

<?xml version="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><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://127.0.0.1:3306/userdb</property><property name="connection.username">root</property><property name="connection.password">x5</property><!-- 配置额外属性 --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><property name="show_sql">true</property><property name="format_sql">true</property><!-- 使用正向生成表 --><property name="hbm2ddl.auto">update</property><property name="hibernate.current_session_context_class">thread</property><!-- 加载对象映射类 --><mapping class="com.hibernate.relation.entity.RoleInfo"/><mapping class="com.hibernate.relation.entity.UserInfo"/></session-factory></hibernate-configuration>


实体类:RoleInfo类

      

package com.hibernate.relation.entity;import java.util.HashSet;import java.util.Set;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.Table;import org.hibernate.annotations.Cascade;import org.hibernate.annotations.OnDelete;import org.hibernate.annotations.OnDeleteAction;@Entity@Table(name="roleInfo")public class RoleInfo {private Integer roleId;private String roleName;private Set<UserInfo> users = new HashSet<UserInfo>();@Id@GeneratedValue(strategy=GenerationType.AUTO)public Integer getRoleId() {return roleId;}public void setRoleId(Integer roleId) {this.roleId = roleId;}public String getRoleName() {return roleName;}public void setRoleName(String roleName) {this.roleName = roleName;}@OneToMany(mappedBy="roleInfo")@Cascade({org.hibernate.annotations.CascadeType.DELETE_ORPHAN})  public Set<UserInfo> getUsers() {return users;}public void setUsers(Set<UserInfo> users) {this.users = users;}@Overridepublic String toString() {return "RoleInfo [roleId=" + roleId + ", roleName=" + roleName + "]";}}

实体类:UserInfo

    

package com.hibernate.relation.entity;import java.util.Date;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Table;import javax.persistence.Transient;import org.hibernate.annotations.Cascade;@Entity // 标注该类是实体@Table(name = "user")public class UserInfo {private Date beginTime;private Integer userId;private String username;private String password;// 表中表现为引用RoleInfo表中的主键,而对象中表现为引用该表对应类private RoleInfo roleInfo;@Id // 标注主键@GeneratedValue(strategy=GenerationType.AUTO)public Integer getUserId() {return userId;}public void setUserId(Integer userId) {this.userId = userId;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@ManyToOne@JoinColumn(name="roleId") // 指定生成外键名称public RoleInfo getRoleInfo() {return roleInfo;}public void setRoleInfo(RoleInfo roleInfo) {this.roleInfo = roleInfo;}@Transient // 生成实体的时候不能创建在表中public Date getBeginTime() {return beginTime;}public void setBeginTime(Date beginTime) {this.beginTime = beginTime;}@Overridepublic String toString() {return "UserInfo [userId=" + userId + ", username=" + username+ ", password=" + password + ", roleInfo=" + roleInfo + "]";}}

测试类:

    

/** *  */package com.hibernate.relation.test;import org.junit.Test;import com.hibernate.relation.util.HibernateSessionFactoryUtil;/** * @author Administrator * @date 2015-12-17 */public class TestHibernateJPA {@Testpublic void testJpa() {System.out.println(HibernateSessionFactoryUtil.getSession());}}


jpa维护不方便,开发很快

0 0
原创粉丝点击