当前位置:   article > 正文

spring整合springDataJpa底层hibernate_spring data jpa 内部 hibernate

spring data jpa 内部 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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143

第二步:配置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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

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

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

第五步:

        使用jpql进行增删改操作时需要手动上事务控制
		使用继承接口的方法时,不用事务,由自动控制
		使用@query操作增删改操作时,需要额外注解@modifying
		@Query(value = "select * from cst_customer",nativeQuery = true=>代表使用sql)
		public List<Object[]> sqlFindAll();//list<Object[]>代表可以接受任意类型。
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/815279
推荐阅读
相关标签
  

闽ICP备14008679号