spring整合springDataJpa底层hibernate

第一步:导入依赖

           <properties>
			<spring.version>5.0.2.RELEASE</spring.version>
			<hibernate.version>5.0.7.Final</hibernate.version>
			<slf4j.version>1.6.6</slf4j.version>
			<log4j.version>1.2.12</log4j.version>
			<c3p0.version>0.9.1.2</c3p0.version>
			<mysql.version>5.1.6</mysql.version>
			/properties>
			<dependencies>
				<!-- junit单元测试 -->
				<dependency>
					<groupId>junit</groupId>
					<artifactId>junit</artifactId>
					<version>4.12</version>
					<scope>test</scope>
				</dependency>
			
				<!-- spring beg -->
				<dependency>
					<groupId>org.aspectj</groupId>
					<artifactId>aspectjweaver</artifactId>
					<version>1.6.8</version>
				</dependency>
			
				<dependency>
					<groupId>org.springframework</groupId>
					<artifactId>spring-aop</artifactId>
					<version>${spring.version}</version>
				</dependency>
			
				<dependency>
					<groupId>org.springframework</groupId>
					<artifactId>spring-context</artifactId>
					<version>${spring.version}</version>
				</dependency>
			
				<dependency>
					<groupId>org.springframework</groupId>
					<artifactId>spring-context-support</artifactId>
					<version>${spring.version}</version>
				</dependency>
			
				<!-- spring对orm框架的支持包-->
				<dependency>
					<groupId>org.springframework</groupId>
					<artifactId>spring-orm</artifactId>
					<version>${spring.version}</version>
				</dependency>
			
				<dependency>
					<groupId>org.springframework</groupId>
					<artifactId>spring-beans</artifactId>
					<version>${spring.version}</version>
				</dependency>
			
				<dependency>
					<groupId>org.springframework</groupId>
					<artifactId>spring-core</artifactId>
					<version>${spring.version}</version>
				</dependency>
			
				<!-- spring end -->
			
				<!-- hibernate beg -->
				<dependency>
					<groupId>org.hibernate</groupId>
					<artifactId>hibernate-core</artifactId>
					<version>${hibernate.version}</version>
				</dependency>
				<dependency>
					<groupId>org.hibernate</groupId>
					<artifactId>hibernate-entitymanager</artifactId>
					<version>${hibernate.version}</version>
				</dependency>
				<dependency>
					<groupId>org.hibernate</groupId>
					<artifactId>hibernate-validator</artifactId>
					<version>5.2.1.Final</version>
				</dependency>
				<!-- hibernate end -->
			
				<!-- c3p0 beg -->
				<dependency>
					<groupId>c3p0</groupId>
					<artifactId>c3p0</artifactId>
					<version>${c3p0.version}</version>
				</dependency>
				<!-- c3p0 end -->
			
				<!-- log end -->
				<dependency>
					<groupId>log4j</groupId>
					<artifactId>log4j</artifactId>
					<version>${log4j.version}</version>
				</dependency>
			
				<dependency>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-api</artifactId>
					<version>${slf4j.version}</version>
				</dependency>
			
				<dependency>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
					<version>${slf4j.version}</version>
				</dependency>
				<!-- log end -->
			
			
				<dependency>
					<groupId>mysql</groupId>
					<artifactId>mysql-connector-java</artifactId>
					<version>${mysql.version}</version>
				</dependency>
			
				<!-- spring data jpa 的坐标-->
				<dependency>
					<groupId>org.springframework.data</groupId>
					<artifactId>spring-data-jpa</artifactId>
					<version>1.9.0.RELEASE</version>
				</dependency>
			
				<dependency>
					<groupId>org.springframework</groupId>
					<artifactId>spring-test</artifactId>
					<version>${spring.version}</version>
				</dependency>
			
				<!-- el beg 使用spring data jpa 必须引入 -->
				<dependency>
					<groupId>javax.el</groupId>
					<artifactId>javax.el-api</artifactId>
					<version>2.2.4</version>
				</dependency>
			
				<dependency>
				<groupId>org.glassfish.web</groupId>
				<artifactId>javax.el</artifactId>
				<version>2.2.4</version>
				</dependency>
				<!-- el end -->
			</dependencies>

第二步:配置xml

	<!-- 1.创建entityManagerFactory对象交给spring容器管理-->
	<bean id="entityManagerFactoty" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<!--配置的扫描的包(实体类所在的包) -->
		<property name="packagesToScan" value="com.itheima.domain" />
		<!-- jpa的实现厂家 -->
		<property name="persistenceProvider">
			<bean class="org.hibernate.jpa.HibernatePersistenceProvider"/>
		</property>

		<!--jpa的供应商适配器 -->
		<property name="jpaVendorAdapter">
			<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
				<!--配置是否自动创建数据库表 -->
				<property name="generateDdl" value="false" />
				<!--指定数据库类型 -->
				<property name="database" value="MYSQL" />
				<!--数据库方言:支持的特有语法 -->
				<property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" />
				<!--是否显示sql -->
				<property name="showSql" value="true" />
			</bean>
		</property>

		<!--jpa的方言 :高级的特性 -->
		<property name="jpaDialect" >
			<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
		</property>

	</bean>

	<!--2.创建数据库连接池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="user" value="root"></property>
		<property name="password" value="root"></property>
		<property name="jdbcUrl" value="jdbc:mysql:///jpa" ></property>
		<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
	</bean>

	<!--3.整合spring dataJpa-->
	<jpa:repositories base-package="com.itheima.dao" transaction-manager-ref="transactionManager"
					entity-manager-factory-ref="entityManagerFactoty" ></jpa:repositories>

	<!--4.配置事务管理器 -->
	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
		<property name="entityManagerFactory" ref="entityManagerFactoty"></property>
	</bean>

	<!-- 6. 配置包扫描-->
	<context:component-scan base-package="com.itheima" ></context:component-scan>

第三步:配置domain实体类映射
主要注解有:@Table@Entity@Id@Column@GeneratedValue(strategy = GenerationType.IDENTITY)
第四步:配置dao接口

dao接口需要继承两个接口:
			//T,为实体类,ID为实体类的属性id,作用是高层抽取接口所用
			这个接口封装了一些简单的增删改查操作,我们使用时不用写实现类
			JpaRepository<T,ID>
			//这个接口主要封装了一些复杂操作,如分页。
			JpaSpecificationExecutor<T>//T,为实体类

第五步:

        使用jpql进行增删改操作时需要手动上事务控制
		使用继承接口的方法时,不用事务,由自动控制
		使用@query操作增删改操作时,需要额外注解@modifying
		@Query(value = "select * from cst_customer",nativeQuery = true=>代表使用sql)
		public List<Object[]> sqlFindAll();//list<Object[]>代表可以接受任意类型。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值