日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Data JPA教程第一部分:配置

發布時間:2023/12/3 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Data JPA教程第一部分:配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring Data JPA是一個旨在簡化基于JPA的存儲庫的創建并減少與數據庫通信所需的代碼量的項目。 在我的工作和個人愛好項目中,我已經使用了一段時間,確實使事情變得更加簡單和整潔。 現在是時候與您分享我的知識了。

這是我的Spring Data JPA教程的第一部分,它將向您介紹在將Hibernate用作JPA提供程序時如何配置Spring Data JPA。 在開始之前,我想弄清楚一件事:本教程不是Hibernate,JPA或Spring的入門級教程。 如果您想了解我的Spring Data JPA教程中描述的概念,那么您必須對這些技術有一定的經驗。

本教程的依賴性如下:

  • BoneCP 0.7.1.RELEASE(您也可以使用其他數據源實現)
  • Hibernate 4.0.1.Final
  • Spring Framework 3.1.0。發布
  • Spring Data JPA 1.0.2
  • Servlet API 3.0

另外,由于我將Maven用作構建工具,因此如果要運行示例應用程序,則必須安裝它。

入門

現在該開始了。 您可以按照以下步驟配置Spring Data JPA:

  • 您必須獲得所需的依賴關系。
  • 您必須在Spring應用程序上下文配置中配置所需的bean。 Spring Data JPA所需的bean是:數據源,事務管理器和實體管理器工廠。
  • 您必須配置Spring Data JPA。

以下將詳細解釋這些步驟:

獲得所需的輔佐

首先,您需要獲取所需的依賴關系。 您可以通過在pom.xml文件中配置所需的依賴項來實現。 我的示例的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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>net.petrikainulainen.spring</groupId><artifactId>data-jpa-tutorial-part-one</artifactId><packaging>war</packaging><version>0.1</version><name>Spring Data JPA Tutorial Part One</name><description>Spring Data JPA Tutorial Part One</description><licenses><license><name>Apache License 2.0</name><url>http://www.apache.org/licenses/LICENSE-2.0</url></license></licenses><url>http://www.petrikainulainen.net</url><repositories><repository><id>repository.jboss.org-public</id><name>JBoss repository</name><url>https://repository.jboss.org/nexus/content/groups/public</url></repository></repositories><properties><hibernate.version>4.0.1.Final</hibernate.version><mysql.connector.version>5.1.18</mysql.connector.version><slf4j.version>1.6.1</slf4j.version><spring.version>3.1.0.RELEASE</spring.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- Spring Framework --><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><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</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-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><!-- Spring MVC --><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>2.2.2</version></dependency><!-- Spring Data JPA --><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId><version>1.0.2.RELEASE</version></dependency><!-- Hibernate --><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><!-- H2 Database --><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>1.3.160</version></dependency><!-- MySQL JDBC connector --><!-- If you want to use MySQL, uncomment this dependency declation. --><!--<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.connector.version}</version></dependency>--><!-- PostgreSQL JDBC 4 --><!-- If you don't want to use PostgreSQL, uncomment this dependency declaration. --><!--<dependency><groupId>postgresql</groupId><artifactId>postgresql</artifactId><version>9.0-801.jdbc4</version></dependency>--><!-- BoneCP --><dependency><groupId>com.jolbox</groupId><artifactId>bonecp</artifactId><version>0.7.1.RELEASE</version></dependency><!-- Servlet API 3.0 --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- Logging dependencies --><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><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.16</version></dependency><!-- Testing Dependencies --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency></dependencies><build><finalName>data-jpa-tutorial-part-one</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.6</source><target>1.6</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.1.1</version><configuration><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin><plugin><groupId>org.mortbay.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>8.1.0.RC2</version><configuration><scanIntervalSeconds>0</scanIntervalSeconds><webAppConfig><defaultsDescriptor>src/main/resources/webdefault.xml</defaultsDescriptor></webAppConfig></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-site-plugin</artifactId><version>3.0</version><configuration><reportPlugins><!-- Cobertura Plugin --><plugin><groupId>org.codehaus.mojo</groupId><artifactId>cobertura-maven-plugin</artifactId><version>2.5.1</version></plugin></reportPlugins></configuration></plugin></plugins></build> </project>

配置Spring應用程序上下文

其次,您必須配置Spring應用程序上下文。 您可能還記得,您需要配置數據源,事務管理器和實體管理器工廠bean。 如果您使用的是Spring 3.1和Servlet 3.0,則可以通過實現Java配置類并將該配置類加載到Web應用程序初始化程序中來實現。 我的應用程序上下文配置類的內容如下:

import com.jolbox.bonecp.BoneCPDataSource; import org.hibernate.ejb.HibernatePersistence; import org.springframework.context.MessageSource; import org.springframework.context.annotation.*; import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.core.env.Environment; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView;import javax.annotation.Resource; import javax.sql.DataSource;/*** An application context Java configuration class. The usage of Java configuration* requires Spring Framework 3.0 or higher with following exceptions:* <ul>* <li>@EnableWebMvc annotation requires Spring Framework 3.1</li>* </ul>* @author Petri Kainulainen*/ @Configuration @ComponentScan(basePackages = {"net.petrikainulainen.spring.datajpa.controller"}) @EnableWebMvc @ImportResource("classpath:applicationContext.xml") @PropertySource("classpath:application.properties") public class ApplicationContext {private static final String VIEW_RESOLVER_PREFIX = "/WEB-INF/jsp/";private static final String VIEW_RESOLVER_SUFFIX = ".jsp";private static final String PROPERTY_NAME_DATABASE_DRIVER = "db.driver";private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";private static final String PROPERTY_NAME_DATABASE_URL = "db.url";private static final String PROPERTY_NAME_DATABASE_USERNAME = "db.username";private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect";private static final String PROPERTY_NAME_HIBERNATE_FORMAT_SQL = "hibernate.format_sql";private static final String PROPERTY_NAME_HIBERNATE_NAMING_STRATEGY = "hibernate.ejb.naming_strategy";private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql";private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN = "entitymanager.packages.to.scan";private static final String PROPERTY_NAME_MESSAGESOURCE_BASENAME = "message.source.basename";private static final String PROPERTY_NAME_MESSAGESOURCE_USE_CODE_AS_DEFAULT_MESSAGE = "message.source.use.code.as.default.message";@Resourceprivate Environment environment;@Beanpublic DataSource dataSource() {BoneCPDataSource dataSource = new BoneCPDataSource();dataSource.setDriverClass(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER));dataSource.setJdbcUrl(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_URL));dataSource.setUsername(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME));dataSource.setPassword(environment.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD));return dataSource;}@Beanpublic JpaTransactionManager transactionManager() throws ClassNotFoundException {JpaTransactionManager transactionManager = new JpaTransactionManager();transactionManager.setEntityManagerFactory(entityManagerFactoryBean().getObject());return transactionManager;}@Beanpublic LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() throws ClassNotFoundException {LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();entityManagerFactoryBean.setDataSource(dataSource());entityManagerFactoryBean.setPackagesToScan( environment.getRequiredProperty(PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN));entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistence.class);Properties jpaProterties = new Properties();jpaProterties.put(PROPERTY_NAME_HIBERNATE_DIALECT, environment.getRequiredProperty(PROPERTY_NAME_HIBERNATE_DIALECT));jpaProterties.put(PROPERTY_NAME_HIBERNATE_FORMAT_SQL, environment.getRequiredProperty(PROPERTY_NAME_HIBERNATE_FORMAT_SQL));jpaProterties.put(PROPERTY_NAME_HIBERNATE_NAMING_STRATEGY, environment.getRequiredProperty(PROPERTY_NAME_HIBERNATE_NAMING_STRATEGY));jpaProterties.put(PROPERTY_NAME_HIBERNATE_SHOW_SQL, environment.getRequiredProperty(PROPERTY_NAME_HIBERNATE_SHOW_SQL));entityManagerFactoryBean.setJpaProperties(jpaProterties);return entityManagerFactoryBean;}@Beanpublic MessageSource messageSource() {ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();messageSource.setBasename( environment.getRequiredProperty(PROPERTY_NAME_MESSAGESOURCE_BASENAME));messageSource.setUseCodeAsDefaultMessage( Boolean.parseBoolean( environment.getRequiredProperty(PROPERTY_NAME_MESSAGESOURCE_USE_CODE_AS_DEFAULT_MESSAGE)));return messageSource;}@Beanpublic ViewResolver viewResolver() {InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();viewResolver.setViewClass(JstlView.class);viewResolver.setPrefix(VIEW_RESOLVER_PREFIX);viewResolver.setSuffix(VIEW_RESOLVER_SUFFIX);return viewResolver;} }

我的Web應用程序初始化程序如下所示:

import org.springframework.web.WebApplicationInitializer; import org.springframework.web.context.ContextLoaderListener; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.servlet.DispatcherServlet;import javax.servlet.*;/*** Web application Java configuration class. The usage of web application* initializer requires Spring Framework 3.1 and Servlet 3.0.* @author Petri Kainulainen*/ public class DataJPAExampleInitializer implements WebApplicationInitializer {private static final String DISPATCHER_SERVLET_NAME = "dispatcher";private static final String DISPATCHER_SERVLET_MAPPING = "/";@Overridepublic void onStartup(ServletContext servletContext) throws ServletException {AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();rootContext.register(ApplicationContext.class);ServletRegistration.Dynamic dispatcher = servletContext.addServlet(DISPATCHER_SERVLET_NAME, new DispatcherServlet(rootContext));dispatcher.setLoadOnStartup(1);dispatcher.addMapping(DISPATCHER_SERVLET_MAPPING);servletContext.addListener(new ContextLoaderListener(rootContext));} }

您可能已經注意到,我使用@PropertySource批注指定屬性文件的位置,該文??件包含使用的配置參數的值。 我的application.properties文件的內容如下:

# The default database is H2 memory database but I have also # added configuration needed to use either MySQL and PostgreSQL.#Database Configuration db.driver=org.h2.Driver #db.driver=com.mysql.jdbc.Driver #db.driver=org.postgresql.Driver db.url=jdbc:h2:mem:datajpa #db.url=jdbc:mysql://localhost:3306/datajpa #db.url=jdbc:postgresql://localhost/datajpa db.username=sa db.password=#Hibernate Configuration hibernate.dialect=org.hibernate.dialect.H2Dialect #hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect #hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect hibernate.format_sql=true hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy hibernate.show_sql=true#MessageSource message.source.basename=i18n/messages message.source.use.code.as.default.message=true#EntityManager #Declares the base package of the entity classes entitymanager.packages.to.scan=net.petrikainulainen.spring.datajpa.model

配置Spring Data JPA

第三,您必須配置Spring Data JPA。 如果您關注的話,您可能已經注意到,我在應用程序上下文配置類中使用@ImportResource批注從XML配置文件中導入其他配置。 目前,Spring Data JPA不支持Java配置。 因此,配置它的唯一方法是使用XML配置文件。 我的pplicationContext.xml文件如下所示:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:jpa="http://www.springframework.org/schema/data/jpa"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/data/jpahttp://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd"><!--Configures the location of static resources such as css files.Requires Spring Framework 3.0 or higher.--><mvc:resources mapping="/static/**" location="/static/"/><!--Ensures that dispatcher servlet can be mapped to '/' and static resourcesare still served by the containers default servlet. Requires Spring Framework3.0 or higher.--><mvc:default-servlet-handler/><!--Configures Spring Data JPA and sets the base package of my DAOs.--><jpa:repositories base-package="net.petrikainulainen.spring.datajpa.repository"/> </beans>

你做完了

這就對了。 我現在已經向您展示了如何配置Spring Data JPA。 我還創建了一個示例應用程序,以演示此配置確實有效。 您可以通過從Github獲取示例應用程序并使用Maven Jetty插件運行示例Web應用程序來自己測試配置( 注意 :請記住首先創建模型和存儲庫包。 因為無法向Git添加空目錄臨時區域 ,Github存儲庫也沒有)。

我的Spring Data JPA教程的第二部分描述了如何使用Spring Data JPA創建一個簡單的CRUD Web應用程序。 敬請關注。

參考: Spring Data JPA教程第一部分:來自Petri Kainulainen博客的JCG合作伙伴 Petri Kainulainen的配置 。

翻譯自: https://www.javacodegeeks.com/2013/07/spring-data-jpa-tutorial-part-one-configuration.html

總結

以上是生活随笔為你收集整理的Spring Data JPA教程第一部分:配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。