• Hibernate对JPA的支持


    1.配置src/META-INF下persistence.xml注意文件名是固定的。

     1 <?xml version="1.0" encoding="UTF-8"?>
    2 <persistence xmlns="http://java.sun.com/xml/ns/persistence"
    3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    5 http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
    6
    7 <persistence-unit name="hibPU" transaction-type="RESOURCE_LOCAL">
    8 <provider>org.hibernate.ejb.HibernatePersistence</provider>
    9 <properties>
    10 <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
    11 <property name = "hibernate.connection.driver_class" value = "com.mysql.jdbc.Driver"/>
    12 <property name = "hibernate.connection.url" value = "jdbc:mysql://localhost:3306/hib"/>
    13 <property name = "hibernate.connection.username" value = "root"/>
    14 <property name = "hibernate.connection.password" value = "123456"/>
    15 <property name = "hibernate.hbm2ddl.auto" value = "update"/>
    16 <property name="hibernate.show_sql" value="true"/>
    17 <property name="hibernate.format_sql" value="true"/>
    18 </properties>
    19 </persistence-unit>
    20
    21 </persistence>

    持久化单元的名称属性name是程序中引用的。provider的类所在的包必须有,否则报错。配置的属性名必须带hibernate前缀,如hibernate.dialect,否则报错。

    hibernate.hbm2ddl.auto为update的意思是即便持久化类对应的表不存在,那么进行持久化操作时会创建表,如果存在则不创建。如果为create则每次加载都重新生成表。

    2.持久化类可以采用注解方式配置映射,也可以采用xml文件的方式。如User.java对应User.hbm.xml放到与User的相同目录下,则即便在hibernate.cfg.xml中没有配置mapping resource,仍然有效。采用注解方式,可以不在hibernate.cfg.xml中配置mapping,如果要配置,则用<mapping class="com.tazi.domin.User"/>而不再是<mapping resource="com/tazi/domin/User.hbm.xml"/>.

     1 package com.tazi.domin;
    2
    3 import javax.persistence.Column;
    4 import javax.persistence.Entity;
    5 import javax.persistence.GeneratedValue;
    6 import javax.persistence.GenerationType;
    7 import javax.persistence.Id;
    8 import javax.persistence.Table;
    9
    10 @Entity @Table(name="users")
    11 public class User {
    12 @Id
    13 @GeneratedValue(strategy=GenerationType.IDENTITY)
    14 private Integer id;
    15 @Column
    16 private String password;
    17 //@Column
    18 //如果不加@Column则默认也会加上,除非使用@Transient
    19 private String username;
    20 public String getPassword() {
    21 return password;
    22 }
    23 public void setPassword(String password) {
    24 this.password = password;
    25 }
    26 public String getUsername() {
    27 return username;
    28 }
    29 public void setUsername(String username) {
    30 this.username = username;
    31 }
    32 public Integer getId() {
    33 return id;
    34 }
    35 public void setId(Integer id) {
    36 this.id = id;
    37 }
    38 }

    3.使用EntityManager操作数据

    首先根据persistence-unit中的name创建实体管理器工厂。

     1         EntityManagerFactory emf=Persistence.createEntityManagerFactory("hibPU");
    2 EntityManager em=emf.createEntityManager();
    3 EntityTransaction tx=em.getTransaction();
    4
    5 User user=new User();
    6 user.setUsername("tazi");
    7 user.setPassword("12345");
    8 tx.begin();
    9 em.persist(user);
    10 tx.commit();
    11 em.close();
    12 emf.close();

    输出:

    1 Hibernate: 
    2 insert
    3 into
    4 users
    5 (password, username)
    6 values
    7 (?, ?)






  • 相关阅读:
    腰围2尺1,2,3,4,5,6,7,8寸各自等于是多少厘米/英寸(对比表)
    MySQL Server 5.0 下载与 安装指南[图文] (安装到非系统路径+设置root账号相应password)
    UISearchDisplayController UISearchBar
    第八届蓝桥杯JavaB组省赛真题
    第八届蓝桥杯JavaA组省赛真题
    第八届蓝桥杯JavaA组省赛真题
    第八届蓝桥杯JavaA组省赛真题
    第八届蓝桥杯JavaA组省赛真题
    第八届蓝桥杯JavaA组省赛真题
    第七届蓝桥杯JavaC组省赛真题
  • 原文地址:https://www.cnblogs.com/tazi/p/2303610.html
Copyright © 2020-2023  润新知