JPA复习(一)——实体类注解
来源:互联网 发布:淘宝接单平台软件下载 编辑:程序博客网 时间:2024/06/05 02:57
最近开始使用spring boot开发微服务,用到了JPA,在编写DAO层代码时,看见老司机用方法名实现增删改查,想到了spring-data+JPA的神奇组合,这两个技术去年8月看尚学堂佟刚老师的视频学到的(地址在最后),现在拿出来复习一下,为以后的开发做准备。
JPA的实体类注解是必需要了解的,以下创建一个User类,来简单说明这些注解的作用
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.TableGenerator;import javax.persistence.Temporal;import javax.persistence.TemporalType;import javax.persistence.Transient;/** * 使用注解映射实体类 * 1.字段的注解必须放在get方法上,字段上无效 * 2.如果getter上不加注解,默认使用@Basic注解,即默认字段名,长度 * 3.普通的get方法不生成列,使用@Transient注解 * 4.时间默认的列类型是dateTime类型,使用@Temporal加以区分 * @author Jaynnay * */@Table(name="JPA_USER")@Entitypublic class User { private Integer id; private String name; private Date offTiem; private Date birthday; private Date createTime; @Column(name="USER_ID") @Id @TableGenerator(name="table_generator", table="jpa_id_table", //下面三列可以唯一确定pk_name=USER_ID那一行的pk_value=1 pkColumnName="pk_name", pkColumnValue="USER_ID", valueColumnName="pk_value", allocationSize=5) @GeneratedValue(strategy=GenerationType.TABLE,generator="table_generator") /**@GeneratedValue(strategy=GenerationType.AUTO)*/ public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Temporal(TemporalType.TIME) public Date getOffTiem() { return offTiem; } public void setOffTiem(Date offTiem) { this.offTiem = offTiem; } @Temporal(TemporalType.DATE) public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Temporal(TemporalType.TIMESTAMP) public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } @Column(name="USER_NAME",length=20,nullable=false) public String getName() { return name; } public void setName(String name) { this.name = name; } //默认加Basic注解, 生成msg列,但是这是个普通的get方法,不想生成列,就加@Transient @Transient public String getMsg() { return "my name is " + this.name; }}
以上代码都是以前写的例子代码,现在对上面出现的注解逐一解释一下
@Table:name属性指定表名
@Entity:表明这是一个实体类
@Id:声明主键
@Column(name=”USER_ID”):如果实体类的属性名和表中的字段名不匹配,使用name映射
@GeneratedValue:这里出现了两种
1.GenerationType.AUTO是我们常见的自增
2.strategy=GenerationType.TABLE,generator=”table_generator” 通过一张表的一个字段去充当主键
首先通过@TableGenerator注册一个名叫table_generator的主键生成器,table属性指定一张表,pkColumnName-主键名所在列,pkColumnValue-user表主键的名称,valueColumnName-生成的主键,allocationSize-每次主键增长的值
测试代码
import java.util.Date;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.EntityTransaction;import javax.persistence.Persistence;import cn.sina.entity.User;/** * EntityManagerFactory = SessionFactory * EntityManager = session * * @author Jaynnay * */public class JPATest { public static void main(String[] args) { //初始化EntityManagerFactory和EntityManager EntityManagerFactory factory = Persistence.createEntityManagerFactory("JPA_1_Start");//persistence.xml中的persistence-unit name EntityManager manager = factory.createEntityManager(); //开启事务 EntityTransaction transaction = manager.getTransaction(); transaction.begin(); User user = new User(); user.setName("peter"); user.setBirthday(new Date()); user.setCreateTime(new Date()); user.setOffTiem(new Date()); //保存 manager.persist(user); //提交事务 transaction.commit(); //关闭session连接 manager.close(); factory.close(); }}
测试类的注释写的很完善,大家可以慢慢看,不懂的地方请留言
下面是jpa_id_table表和jpa_user表在两次插入之后的结果,验证了allocationSize的作用
佟刚老师JPA视频下载地址:http://pan.baidu.com/s/1slqMmXR
- JPA复习(一)——实体类注解
- Myeclipse自动生成注解方式实体类—JPA方式
- JPA:实体类注解配置
- JPA实体类中的注解
- JPA实体类中的注解
- JPA实体注解(三)
- 使用JPA注解配置ORM实体类
- JPA注解的使用,用于实体类的注解
- JPA注解的使用,用于实体类的注解
- JPA注解的使用,用于实体类的注解
- Hibernate,JPA注解(一)
- JPA实体的常用注解
- JPA——管理实体
- JPA学习笔记(3)——JPA注解
- JPA学习笔记(3)——JPA注解
- JPA学习笔记(3)——JPA注解
- SSH中使用jpa注解方式配置实体类
- [spring_boot]jpa生成实体类注解报错
- (学习java)用java语言构造的循环链表解决约瑟夫问题
- Hibernate入门篇(1)
- spring aop log日志
- 学习之路的开始!!
- FPGA开发要懂得使用硬件分析仪调试——ILA
- JPA复习(一)——实体类注解
- 安装ubuntu遇到initramfs问题
- Spring Aop(九)——基于正则表达式的Pointcut
- Swift 自定义 UICollectionViewFlowLayout 实现横向布局分页
- Java 获取环境变量及系统属性
- NKOJ4191中山纪念中学 Trie(状压dp)
- 【总结帖】求1-100以内的素数的方法
- struts2框架
- 人生的终极目标,是为了感受快乐