zoukankan      html  css  js  c++  java
  • JPA的学习

    JPA 
    1.实体注解 @Entity
    主键注解  @Id   主键策略@GeneratedValue(strategy=GenerationType.AUTO[IDENTITY,SEQUENCE,TABLE]) auto:根据方言数据库自己选择,默认选项 identity:MySQL支持  sequence:oracle支持
    @Column(length=32)字段长度 
    @Temporal(TemporalType.DATE) 日期类型注解,只存储日期
    @Lob 字段为长文本或者二进制数据时
    @Transient 属性不和数据库字段映射
    @Basic(fetch=Fetch.LAZY) 用在字段上面,延迟加载,用不到的时候是不会加载到内存的
    2.提供的接口

    EntityManagerFactory 功能等价于hibernate里的sessionFactory
    EntityManager 等价于SessionManager

    复制代码
    EntityManagerFactory factory=Persistence.careateEntityManagerFactory("[配置文件里的持久化单元名称]")
    EntityManager em=factory.createEntityManager();
    em.getTranscation().begin();  //开始事物
    em.persist(new Entity());
    em.getTransaction().commit();
    em.close();
    factory.close();
    复制代码

    find() :根据ID号加载实体,相当于hibernate里的get()
    getReference(): 根据ID号懒加载实体类,只有访问实体类的对象时才会与数据库同步,相当于hibernate里的load
    remove():删除,里面参数为对象
    查询语句:

    Query query=em.createQuery("select o from person o where o.id=?1");
    query.setParameter(1,2);
    List<Person> personList=query.getResultList();


    更新查询:

    1 Query query=em.createQuery("delete  from person o where o.id=?1");
    2 query.setParameter(1,2);
    3 quert.executeUpdate();

    refresh():使内存中的Javabean和数据库数据再一次同步化。注:已经执行过find函数了,此时别人修改了数据库中的数据,你再次调用find函数是无法更新值得,因为jpa会默认从EntityManager中返回给你
    3、双向管理与级联操作
    1-m关系(用注解OneToMany):多的一方为关系的维护的,关系维护断负责外键记录的更新,关系被维护断是没有权利更新外键字段的

    其中可以有参数cascade,值可取CascadeType.Refresh,CascadeType.persist等

    fetch:值可取FetchType.EAGER(立即得到),FetchType.LAZY(延迟加载),默认为EAGER

    mappedby:出现这个的类为关系的被维护端,值为维护端中的一个属性。例如订单和订单项,在订单里的订单项上的oneToMan注解中出现此参数,表示订单表Order为被维护的表,订单项表的OrderItem里的Order属性来维护,则mappedby的值就是"order"

    @JoinColumn:定义外键字段的名称 例如@JoinColumn(name="order_id")

  • 相关阅读:
    深入了解ibatis源码----简单ibatis示例代码
    struts深入理解之登录示例的源码跟踪
    struts深入原理之RequestProcessor与xml
    struts学习
    Debugging WebLogic Server Applications Using Eclipse and the WebLogic-Plugin
    论做人与做事
    网络编程I/O功能介绍
    Python标准库:内置函数format(value[, format_spec])
    swift 笔记 (七) —— 关闭
    在自由软件的价值
  • 原文地址:https://www.cnblogs.com/tangshiguang/p/6753556.html
Copyright © 2011-2022 走看看