智销功能_基本项目搭建

 

  sssdj:SpringMVC + Spring + SpringDataJpa-> 如今比较流行的一种设计(Spring全家桶)java

  

  要集成三大框架(Spring+SpringMVC+SpringDataJpa)mysql

   什么是JPA

  • JPA:(Java Persistence API) ORM的规范
  • JPA是规范,Hibernate是它的实现(不惟一,但最好)
  • 最底层的操做仍是JDBC(引入驱动包)

  

  什么是ORM

  o(对象,java面向对象) r(关系,关系型数据库) m(映射)sql

  基本项目搭建数据库

1.1使用 Maven搭建项目

  

1.2导入相应的jar包

  • 导包类型(hibernate核心包,JPA支持包,驱动包,测试包)
  • JDK1.8插件配置支持

  

2.1 使用工具生成 META-INF\persistence.xml

你们也能够手动建立框架

  • 快捷键 ctrl+alt+shift+s
  • 进行配置

image

  • 调整结构(以下)

image

  • persistence.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> <!-- 我们这个配置是要链接数据库的(jpa支持我们链接多个数据库) persistence-unit:持久化单元(可能有多个,每个对应一个数据库) name:取个名称(随便取) transaction(事务,同生共死)-type(类型) RESOURCE_LOCAL:本地的事务 JTA: 分布式系统要使用的事务 基本的数据库链接配置(四大金刚) properties:属性(全部属性均可以在下面的文件中找到) resources\源码包\hibernate-release-4.3.8.Final\project\etc\hibernate.properties --> <persistence-unit name="cn.itsource.jpa" transaction-type="RESOURCE_LOCAL"> <properties> <!--链接数据库的四个基本属性--> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> <property name="hibernate.connection.url" value="jdbc:mysql:///jpa" /> <property name="hibernate.connection.username" value="root" /> <property name="hibernate.connection.password" value="root" /> <!-- 配置方言(数据库兼容):你要操做的是什么数据库,根据不一样的方言拼接不一样的SQL InnoDB:支持事务,支持外键 MyISAM:不支持事务,不支持外键(属性高) --> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> <!--配置建表策略(自动化帮咱们建立相应的表)--> <property name="hibernate.hbm2ddl.auto" value="create" /> <!--能够看到SQL的展现--> <property name="hibernate.show_sql" value="true" /> <!--能够看到SQL的展现(漂亮一点)--> <!--<property name="hibernate.format_sql" value="true" />--> </properties> </persistence-unit> </persistence> 

2.4 准备domain对象

//告诉JPA:这个类是要作实体化的 /** * @Entity:我是一个实体类,JPA快来管我 * @Table(name = "t_employee"):我和哪些张是有关系的 * 若是不写,他就认为你有一个表叫:Employee */ import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "t_employee") public class Employee { /** * @Id:表明我是一个主键 * @GeneratedValue:咱们认为主键是自增的 */ @Id @GeneratedValue private Long id; private String name; private String password; //getter,setter省略 } 

2.5 基本功能测试

  • Persistence -> EntityManagerFactory -> EntityManager -> crud
  • 注意点:增删改须要事务 EntityManager能够拿到一个事务
/** * 在JPA中,因此增删改都须要咱们去提交事务 */ //拿到EntityManagerFactory(传入持久化单元的名称) EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("cn.itsource.jpa"); //拿出到实体管理对象 EntityManager entityManager = entityManagerFactory.createEntityManager(); //拿出一个事务 EntityManager里面有一个事务(只能拿到一个事务) //开始事务 entityManager.getTransaction().begin(); //persist:持久化(保存一条数据) entityManager.persist(employee); //提交事务 entityManager.getTransaction().commit(); //关闭资源 entityManager.close(); entityManagerFactory.close(); 

三.CRUD

先完成了工具类dom

//帮我们拿到一个EntityManager对象 public class JpaUtil { private static EntityManagerFactory factory; //加载时运行,且只运行一次 static { try { factory = Persistence.createEntityManagerFactory("cn.itsource.jpa"); } catch (Exception e) { e.printStackTrace(); } } //直接拿到EntityManager对象 public static EntityManager getEntityManager(){ return factory.createEntityManager(); } } 

增删改须要添加事务分布式

3.1 添加

entityManager.persist(employee);ide

3.2 修改

entityManager.merge(employee);工具

3.3 删除

先查询,再判断,最后删除测试

Employee employee = entityManager.find(Employee.class, id); if(employee!=null) { //这里要求我们传一个对象进去 entityManager.remove(employee); } 

3.4 查询一条数据

传类型与id

entityManager.find(Employee.class,id); 

3.1 查询全部

query对象(entityManager建立) jpql:面向对象的查询语言

entityManager = JpaUtil.getEntityManager(); //使用查询对象,写JPQL:像SQL,可是更加简单(面向对象) //1.准备JPQL 不要写* ,from后面是一个类 //String jpql = "select o from cn.itsource.jpa.domain.Employee o"; // String jpql = "select o from Employee o"; String jpql = "from Employee"; //2.根据JPQL拿到查询对象 Query query = entityManager.createQuery(jpql); //3.返回全部数据 return query.getResultList(); 

四.建表策略

4.1 create-drop

先删除-> 再建立 -> 用完(EntityManagerFactory关闭)再删(测试)

4.2 create

先删除-> 再建立(测试)

4.3 update

  • 没有表就建立,有就修改
  • 修改只增不减(不改类型)

4.4 validate

验证功能(只验证domain中写好的属性)

相关文章
相关标签/搜索