Spring Data Jpa +Hibernate 入门实例
来源:互联网 发布:易语言彩票源码下载 编辑:程序博客网 时间:2024/06/05 20:32
项目结构:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ncsi</groupId> <artifactId>SpringData</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>SpringData</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring-framework.version>4.0.2.RELEASE</spring-framework.version> <!-- Logging --> <logback.version>1.0.13</logback.version> <slf4j.version>1.7.5</slf4j.version> </properties> <dependencies> <!-- Spring and Transactions --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring-framework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring-framework.version}</version> </dependency> <!-- Spring JDBC Support --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring-framework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring-framework.version}</version> </dependency> <!-- Apache DBCP--> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <!-- MySQL Driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.0.5</version> </dependency> <!-- Logging with SLF4J & LogBack --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> <scope>compile</scope> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>${logback.version}</version> <scope>runtime</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.0-api --><dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.1.Final</version></dependency> <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-jpa --><dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>1.3.3.RELEASE</version></dependency> <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager --><!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager --><dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>4.2.21.Final</version></dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <target>1.8</target> <source>1.8</source> </configuration> </plugin> </plugins> </build></project>
数据库配置文件
database.name=springdatadatabase.host=localhostdatabase.port=3306database.username=rootdatabase.password=123456liudatabase.driverClass=com.mysql.jdbc.Driverdatabase.url=jdbc:mysql://${database.host}:${database.port}/${database.name}?characterEncoding=UTF-8&characterSetResults=UTF-8
表结构:
CREATE TABLE `jpa_person` ( `id` smallint(6) NOT NULL AUTO_INCREMENT, `last_Name` varchar(20) DEFAULT NULL, `email` varchar(20) DEFAULT NULL, `birth` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
注意:last_Name 中必须要有下划线 _ 不然当你在BylastName查询时 不能查询到Person 这也许是一个命名规则吧
实体类:
package com.ncsi.SpringData.Entity;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Table(name="jpa_person")@Entitypublic class Person { private Integer id; private String lastName; private String email; private String birth; @GeneratedValue @Idpublic Integer getId() { return id;}public void setId(Integer id) { this.id = id;}public String getLastName() { return lastName;}public void setLastName(String lastName) { this.lastName = lastName;}public String getEmail() { return email;}public void setEmail(String email) { this.email = email;}public String getBirth() { return birth;}public void setBirth(String birth) { this.birth = birth;}@Overridepublic String toString() { return "Person [id=" + id + ", lastName=" + lastName + ", email=" + email + ", birth=" + birth + "]";}}
其中 @Table 表示对应数据库的哪一张表
@Entity 表示 该实体类映射@Table对应的表
@GeneratedValue 表示 注解的那个字段为自增(AUTO)
@Id 表示注解的该字段为主键
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:jee="http://www.springframework.org/schema/jee" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:batch="http://www.springframework.org/schema/batch" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.1.7.xsd"> <context:property-placeholder location="classpath:database-source.properties"/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${database.driverClass}"></property> <property name="url" value="${database.url}"></property> <property name="username" value="${database.username}"></property> <property name="password" value="${database.password}"></property> </bean> <!-- 2、配置 JPA 的 EntityManagerFactory --><bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"></bean> </property> <!-- 实体类所在的包名 --> <property name="packagesToScan" value="com.ncsi.SpringData.Entity"></property> <property name="jpaProperties"> <props> <!-- 二级缓存相关 --> <!-- <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop> <prop key="net.sf.ehcache.configurationResourceName">ehcache-hibernate.xml</prop> --> <!-- 生成的数据表的列的映射策略 --> <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop> <!-- hibernate 基本属性 --> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> </props> </property></bean> <!-- 3、配置事务管理器 --><bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"></property></bean><!-- 4、配置支持注解的事务 --><tx:annotation-driven transaction-manager="transactionManager"/> <!-- 5、配置 SpringData --><!-- 加入 jpa 的命名空间 --><jpa:repositories base-package="com.ncsi.SpringData.Repository" entity-manager-factory-ref="entityManagerFactory"></jpa:repositories> </beans>
PersonRepository.java
package com.ncsi.SpringData.Repository;import org.springframework.data.repository.Repository;import com.ncsi.SpringData.Entity.Person;//Repository<Person,Integer> :person为实体类 Integer为主键的类型/** * 重要说明:这里我们不能使用别的方法名字。必须以 get 开头,by 是固定写法(拼接成方法名的时候首字母大写),表示一个连接词, * lastName 是 Person 类的一个属性(拼接成方法名的时候首字母大写)。 * @author P1311529 * */public interface PersonRepository extends Repository<Person,Integer>{ //根据lastName来获取对应的Person Person getById(Integer id); Person getByLastName(String lastName);}
测试类
package com.ncsi.SpringData;import javax.sql.DataSource;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.ncsi.SpringData.Entity.Person;import com.ncsi.SpringData.Repository.PersonRepository;public class DataSourceTest { private ApplicationContext ctx; private PersonRepository personRepository; { ctx = new ClassPathXmlApplicationContext("springdata.xml"); personRepository = ctx.getBean(PersonRepository.class); } @Test public void testDataSource(){ DataSource dataSource = (DataSource) ctx.getBean("dataSource"); System.out.println(dataSource); } @Test public void testJPA(){ } @Test public void testHelloWorldSpringData() { System.out.println(personRepository.getClass().getName()); Person person = personRepository.getById(1); System.out.println(person); Person person2=personRepository.getByLastName("liu"); System.out.println("----华丽的分割线"); System.out.println(person2); } }
测试结果:
16:42:11.152 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Returning cached instance of singleton bean 'org.springframework.transaction.config.internalTransactionAdvisor'com.sun.proxy.$Proxy1916:42:11.168 [main] DEBUG o.s.o.j.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler - Creating new EntityManager for shared EntityManager invocationHibernate: select person0_.id as id1_0_, person0_.birth as birth2_0_, person0_.email as email3_0_, person0_.last_name as last_nam4_0_ from jpa_person person0_ where person0_.id=?16:42:11.357 [main] DEBUG o.s.o.jpa.EntityManagerFactoryUtils - Closing JPA EntityManagerPerson [id=1, lastName=liu, email=@qq.com, birth=0912]16:42:11.357 [main] DEBUG o.s.o.j.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler - Creating new EntityManager for shared EntityManager invocationHibernate: select person0_.id as id1_0_, person0_.birth as birth2_0_, person0_.email as email3_0_, person0_.last_name as last_nam4_0_ from jpa_person person0_ where person0_.last_name=?16:42:11.372 [main] DEBUG o.s.o.jpa.EntityManagerFactoryUtils - Closing JPA EntityManager----华丽的分割线Person [id=1, lastName=liu, email=@qq.com, birth=0912]
阅读全文
0 0
- Spring Data Jpa +Hibernate 入门实例
- Spring Data Jpa+Hibernate 入门2
- spring Data Jpa入门
- Spring Data JPA入门
- Spring Data JPA入门
- Spring Data JPA入门
- Spring Data JPA入门
- Spring Data JPA入门
- Spring Data JPA入门
- Spring Data JPA入门
- Spring Data JPA入门
- Spring Data JPA入门
- Spring Data JPA入门
- Spring Data JPA入门
- Spring Data JPA入门
- spring data jpa 入门
- Spring Data JPA入门
- Spring Data JPA入门
- windows下使用curl命令&&常用curl命令
- python 继承
- [NOIP2013]华容道
- Windows 批处理命令教程
- 【有用】 基于WIFI模块(ESP8266)与非同一个局域网内服务器建立连接
- Spring Data Jpa +Hibernate 入门实例
- java 线程池底层原理
- The Little Redis Book中文版 第二章
- <marquee>元素的介绍和演示
- Java中关于内存泄漏出现的原因以及如何避免内存泄漏(超详细版汇总上)
- 二叉树三序遍历
- not_interested
- 专门显示金钱文本 滚动显示
- c++使用vector来保存程序数据