企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 概述 全称Java Persistence Api,java的持久化规范. JPA是一套接口,hibernate是实现.所有的ORM框架都可以实现JPA接口.hibernate有自己的独立的ORM操作方式.也有JPA规范实现的操作方式. ## JAP的使用 JPA是通过注解的方式来描述对象和表的映射关系.之前的对象和表的映射关系是通过XML. ## 配置 持久化类配置: ~~~ //标注此类为持久化类 @Entity //标注表名 @Table(name = "customer") public class Customer { //标注为主键,OID @Id //和表的哪个字段做映射 @Column(name = "cust_id") //增长策略,OID的增长策略 @GeneratedValue(strategy = GenerationType.AUTO) private Long cust_id; //其他属性和表中字段映射,如果一样可以不写 @Column(name = "cust_name") private String cust_name; private String cust_industry; private String cust_source; private String cust_level; private String cust_phone; private String cust_address; } ~~~ 在src下有一个META-INF文件夹,在MRTA-INF文件下下有一个persistence.xml文件.所有的数据库信息配置都在这个文件中来配置. persistence.xml 文件配置: ~~~ <?xml version="1.0" encoding="UTF-8" ?> <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd" version="2.1"> <!--至少要有一个持久化单元(至少有一个数据库的连接信息)--> <!--名字可以随便取--> <persistence-unit name="mysql"> <properties> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> <property name="hibernate.connection.url" value="jdbc:mysql://192.168.10.10:3306/hibernate?useSSL=false&amp;characterEncoding=utf-8"/> <property name="hibernate.connection.username" value="homestead"/> <property name="hibernate.connection.password" value="secret"/> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> <property name="hibernate.connection.provider_class" value="org.hibernate.c3p0.internal.C3P0ConnectionProvider"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.current_session_context_class" value="thread"/> </properties> </persistence-unit> <persistence-unit name="oracle"> <!--oracle配置--> </persistence-unit> <persistence-unit name="db2"> <!--db2配置--> </persistence-unit> </persistence> ~~~ 测试: ~~~ //加载数据库信息.xml文件中填写的名称. 以下这步相当于sessionFactory EntityManagerFactory factory = Persistence.createEntityManagerFactory("mysql"); //获取连接session EntityManager entityManager = factory.createEntityManager(); //获取事务 EntityTransaction tx = entityManager.getTransaction(); //开启事务 tx.begin(); Customer customer = new Customer(); customer.setCust_name("jack"); //相当于save() entityManager.persist(customer); tx.commit(); entityManager.close(); ~~~