zoukankan      html  css  js  c++  java
  • JPA+Hibernate3入门

    JPA(Java Persistence API.)用于整合现有的ORM技术,可以简化现有Java EE和Java SE应用的对象持久化的开发工作,实现ORM的统一。

    JPA作为一项对象持久化的标准,不但可以获得Java EE应用服务器的支持,还可以直接在Java SE中使用。

    JPA必将成为Java持久化解决方案的主流

    User.java

    package com.archie.model;

    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Table;


    @Entity

    @Table(name="t_user")
    public class User {

    private Integer id;
    private String userName;


    public User(){
    }

    public User(String userName) {
    this.userName = userName;
    }
    //主键生成策略@GeneratedValue(strategy=GenerationType.AUTO),
    //值为AUTO表示根据数据库由Hibernate自动选择生成策略,也可以省略写@GeneratedValue
    //值为IDENTITY表示主键自增长
    //值为SEQUENCE表示主键采用序列的方式
    //值为TABLE各个数据库都通用,但效率较低
    @Id @GeneratedValue
    public Integer getId() {
    return id;
    }
    public void setId(Integer id) {
    this.id = id;
    }
    public String getUserName() {
    return userName;
    }
    public void setUserName(String userName) {
    this.userName = userName;
    }
    }

    JPA的 配置文件

    JPA规范要求配置文件在类路径的META-INF

    persistence.xml

    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
    ="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"

    version
    ="1.0">
    <!-- 持久化单元,transaction-type事务类型包括全局事务类型JTA和本地事务类型 RESOURCE_LOCAL-->
    <persistence-unit name="jpaTest" transaction-type="RESOURCE_LOCAL">
    <properties>
    <!-- 数据库方言 -->
    <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
    <!--
    建表方式,value值为creat-drop时表示创建应用的时候建表,结束应用的时候表自动删除;
    值为update表示如果映射元数据不存在则建立表,如果映射元数据存在并新增加了字段则会添加到数据库表中
    -->
    <property name="hibernate.hbm2ddl.auto" value="update" />
    <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
    <property name="hibernate.connection.username" value="root" />
    <property name="hibernate.connection.password" value="root" />
    <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/jpaTest" />
    </properties>
    </persistence-unit>
    </persistence>
    package com.archie.test;

    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.Persistence;

    import com.archie.model.User;

    public class Test {

    public static void main(String[] args) {
    // EntityManagerFactory相当于Hibernate中的sessionFactory
    EntityManagerFactory factory = Persistence.createEntityManagerFactory("jpaTest");
    // EntityManager相当于Hibernate中session
    EntityManager em = factory.createEntityManager();

    em.getTransaction().begin();
    // 持久化
    em.persist(new User("Tom"));
    em.getTransaction().commit();

    em.close();
    factory.close();
    }
    }

    by archie
  • 相关阅读:
    pig 调试(explain&amp;illerstrate)
    ufldl学习笔记与编程作业:Linear Regression(线性回归)
    EasyUI基础入门之Pagination(分页)
    codevs1052
    1040. Longest Symmetric String (25)
    Appium
    lua实现大数运算
    创建一个Spring的HelloWorld程序
    [Swift]LeetCode495. 提莫攻击 | Teemo Attacking
    [Swift]LeetCode992. K 个不同整数的子数组 | Subarrays with K Different Integers
  • 原文地址:https://www.cnblogs.com/archie2010/p/2020278.html
Copyright © 2011-2022 走看看