分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
最近公司的一个项目需要使用spring-data-jpa框架,所以来学习下该框架。感觉spring对jpa的支持主要有下面两点:
1.根据JPA的规范,我们需要在类路径下的META-INF文件夹中创建persistence.xml文件,spring为我们提供了org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean来进行配置,persistence.xml中的属性都可以在这个bean中进行注入。
2.spring对EntityManagerFactoryBean的创建和销毁进行统一管理,开发者不需要关心这些。
目前暂时想到这两点。
那么下面就通过一个例子来完成基本的CRUD操作。
1.通过MAVEN来创建一个简单的项目,在pom里面加入对应的jar文件
- <properties>
- <spring.version>3.2.0.RELEASE</spring.version>
- <jpa.version>2.0.0</jpa.version>
- <hibernate.version>4.1.4.Final</hibernate.version>
- <slf4j.version>1.6.6</slf4j.version>
- <aspectj.version>1.6.12</aspectj.version>
- <jodatime.version>2.1</jodatime.version>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <mysql.version>5.1.24</mysql.version>
- <commons-dbcp.version>1.4</commons-dbcp.version>
- </properties>
2.在类路径下创建META-INF文件夹,同时创建persistence.xml文件,内容如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <persistence version="2.0" 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_2_0.xsd">
- <persistence-unit name="myJPA" >
- <provider>org.hibernate.ejb.HibernatePersistence</provider>
- <properties>
- <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
- <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/spring_data_jpa?useUnicode=true&characterEncoding=UTF-8" />
- <property name="hibernate.max_fetch_depth" value="3" />
- <property name="hibernate.hbm2ddl.auto" value="update" />
- <property name="hibernate.show_sql" value="true" />
- <property name="hibernate.format_sql" value="true" />
- <property name="javax.persistence.validation.mode" value="none"/>
- </properties>
- </persistence-unit>
- </persistence>
我这里需要打印执行sql语句以及其他信息,如果不需要的话,可以直接写一句:
- <persistence-unit name="myJPA" >
也可以的。
persistence-unit是定义一个单元名称,当然可以定义多个,在实际使用的时候选择其中一个就可以了。
3.创建applicationContext.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:p="http://www.springframework.org/schema/p"
- xmlns:cache="http://www.springframework.org/schema/cache"
- xmlns:jpa="http://www.springframework.org/schema/data/jpa"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.1.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
- http://www.springframework.org/schema/cache
- http://www.springframework.org/schema/cache/spring-cache-3.1.xsd
- http://www.springframework.org/schema/data/jpa
- http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
- <context:annotation-config />
- <context:component-scan base-package="com.jacksoft"/>
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
- <property name="url" value="jdbc:mysql://localhost:3306/spring_data_jpa?useUnicode=true&characterEncoding=UTF-8"></property>
- <property name="username" value="root"></property>
- <property name="password" value="root"></property>
- <property name="maxActive" value="10"></property>
- <property name="maxIdle" value="30"></property>
- <property name="maxWait" value="10"></property>
- </bean>
- <bean id="entityManagerFactory"
- class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="jpaVendorAdapter">
- <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
- <property name="generateDdl" value="true" />
- <property name="database" value="MYSQL" />
- </bean>
- </property>
- <property name="persistenceUnitName" value="myJPA" />
- </bean>
- <!-- 配置事务管理器 -->
- <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
- <property name="entityManagerFactory" ref="entityManagerFactory" />
- </bean>
- <!-- 启用 annotation事务-->
- <tx:annotation-driven transaction-manager="transactionManager"/>
- <!-- 配置Spring Data JPA扫描目录-->
- <jpa:repositories base-package="com.jacksoft"/>
- </beans>
主要就是<jpa:repositories base-package="com.jacksoft"/>,这个可以扫描我们自己写的repository接口,当然这个也可以通过注解的形式来描述。
4. 创建log4j.properties文件
在类目录下创建log4j.properties文件
- # Direct log messages to stdout
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.Target=System.out
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %40.40c:%4L - %m%n
- # Root logger option
- log4j.rootLogger=error, stdout
- # Hibernate logging options (INFO only shows startup messages)
- #log4j.logger.org.springframework=INFO
- log4j.logger.org.springframework.data=error
我这里设置的都是error才会显示信息,当然可以根据实际情况进行修改
5.创建Entry类
这里我只有一个table:t_user,所以只需要创建一个User类,该类需要符合JPA规范
- package com.jacksoft.entry;
- import java.io.Serializable;
- import javax.persistence.Column;
- import javax.persistence.Entity;
- import javax.persistence.GeneratedValue;
- import javax.persistence.GenerationType;
- import javax.persistence.Id;
- import javax.persistence.Table;
- @Entity
- @Table(name="t_user")
- public class User implements Serializable{
- /**
- * @Fields serialVersionUID : TODO
- */
- private static final long serialVersionUID = 1L;
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- private Integer id;
- @Column(name="username")
- private String username;
- @Column(name="password")
- private String password;
- public int getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- @Override
- public String toString() {
- &
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow