当前位置: 首页 > news >正文

网站开发会什么最好的网页设计公司

网站开发会什么,最好的网页设计公司,我是做化工回收的做哪个网站比较好,什么是软件外包产业相关代码:github OSCchinaJPA是什么JPA(Java Persistence API)是Sun官方提出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具 来管理Java应用中的关系数据.它包括以下几方面的内容:1.ORM映射 支持xml和注解方式建立实体与表之间的映射.2.Java持久化API 定义了一…相关代码:github OSCchinaJPA是什么JPA(Java Persistence API)是Sun官方提出的Java持久化规范,它为Java开发人员提供了一种对象/关联映射工具 来管理Java应用中的关系数据.它包括以下几方面的内容:1.ORM映射 支持xml和注解方式建立实体与表之间的映射.2.Java持久化API 定义了一些常用的CRUD接口,我们只需直接调用,而不需要考虑底层JDBC和SQL的细节.3.JPQL查询语言 这是持久化操作中很重要的一个方面通过面向对象而非面向数据库的查询语言查询数据避免程序的SQL语句紧密耦合.在工作中,我们都会用到ORM技术,比如Hibernate,JOOQ等,根据需求的不同,我们会采用不同的ORM框架,当我们需要 更换ORM框架来满足我们的需求时,由于不同ORM框架的实现,使用方式的区别以及各自为营,我们往往需要对代码进行重构.JPA的 出现就是为了解决这个问题,JPA充分吸收了现有一些ORM框架的优点,具有易于使用伸缩性强等优点,为ORM技术提供了一套标准的 接口用来整合不同的ORM框架.Hibernate对JPA的实现JPA本身并不做具体的实现,而只是定义了一些接口规范,让其它ORM来具体的实现这些接口,就目前来说,对JPA规范实现最好的就是 Hibernate了.这里提一下Mybatis,Mybatis并没有实现JPA规范,它本身也不能算做一个真正的ORM框架.Spring Data JPA是什么Spring Data JPA只是Spring Data框架的一个模块,可以极大的简化JPA的使用,Spring Data JPA强大的地方还在于能够简化我们 对持久层业务逻辑的开发,通过规范持久层方法的名称,通过名称来判断需要实现什么业务逻辑,我们机会可以在不写一句sql,不做任何dao层 逻辑的情况下完成我们绝大部分的开发,当然,对于一些复杂的,性能要求高的查询,Spring Data JPA一样支持我们使用原生的sql.在这里我们不过多的去介绍JPA以及Spring Data JPA,主要还是与SpringBoot集成的一些细节以及示例.引入依赖!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-jpa/artifactId /dependency我们引入这个依赖后,发现也引入了Hibernate的包,这是现在一种默认的做法,Hibernate已经被作为JPA规范的最好实现了.配置我们的数据源以及JPA(Hibernate)#配置模板 #https://docs.spring.io/spring-boot/docs/1.4.0.RELEASE/reference/html/common-application-properties.html#数据源 spring.datasource.druid.write.urljdbc:mysql://localhost:3306/jpa spring.datasource.druid.write.usernameroot spring.datasource.druid.write.password1 spring.datasource.druid.write.driver-class-namecom.mysql.jdbc.Driverspring.datasource.druid.read.urljdbc:mysql://localhost:3306/jpa spring.datasource.druid.read.usernameroot spring.datasource.druid.read.password1 spring.datasource.druid.read.driver-class-namecom.mysql.jdbc.Driver#JPA (JpaBaseConfiguration, HibernateJpaAutoConfiguration) spring.jpa.database-platformorg.hibernate.dialect.MySQL5Dialect spring.jpa.databasemysql spring.jpa.generate-ddltrue #就是hibernate.hbm2ddl.auto,具体说明可以看README spring.jpa.hibernate.ddl-autoupdate #通过方法名解析sql的策略 spring.jpa.hibernate.naming-strategyorg.hibernate.cfg.DefaultComponentSafeNamingStrategy spring.jpa.show-sqltrue #spring.jpa.properties.* #spring.jpa.properties.hibernate.hbm2ddl.autoupdate #spring.jpa.properties.hibernate.show_sqltrue #spring.jpa.properties.hibernate.use-new-id-generator-mappingstruedruid数据源注入Configuration public class DruidDataSourceConfig {/*** DataSource 配置* return*/ConfigurationProperties(prefix spring.datasource.druid.read)Bean(name readDruidDataSource)public DataSource readDruidDataSource() {return new DruidDataSource();}/*** DataSource 配置* return*/ConfigurationProperties(prefix spring.datasource.druid.write)Bean(name writeDruidDataSource)Primarypublic DataSource writeDruidDataSource() {return new DruidDataSource();} }EntityManagerFactory实例注入EntityManagerFactory类似于Hibernate的SessionFactory,mybatis的SqlSessionFactory 总之,在执行操作之前,我们总要获取一个EntityManager,这就类似于Hibernate的Session, mybatis的sqlSession. 注入EntityManagerFactory有两种方式,一种是直接注入EntityManagerFactory,另一种是通过 LocalContainerEntityManagerFactoryBean来间接注入.虽说这两种方法都是基于 LocalContainerEntityManagerFactoryBean的,但是在配置上还是有一些区别.1.直接注入EntityManagerFactory配置:通过spring.jpa.properties.*来配置Hibernate的属性spring.jpa.properties.hibernate.hbm2ddl.autoupdate spring.jpa.properties.hibernate.show_sqltrue spring.jpa.properties.hibernate.use-new-id-generator-mappingstrue Configuration EnableJpaRepositories(value com.lc.springBoot.jpa.repository,entityManagerFactoryRef writeEntityManagerFactory,transactionManagerRefwriteTransactionManager) public class WriteDataSourceConfig {AutowiredJpaProperties jpaProperties;AutowiredQualifier(writeDruidDataSource)private DataSource writeDruidDataSource;/*** EntityManagerFactory类似于Hibernate的SessionFactory,mybatis的SqlSessionFactory* 总之,在执行操作之前,我们总要获取一个EntityManager,这就类似于Hibernate的Session,* mybatis的sqlSession.* return*/Bean(name writeEntityManagerFactory)Primarypublic EntityManagerFactory writeEntityManagerFactory() {HibernateJpaVendorAdapter vendorAdapter new HibernateJpaVendorAdapter();LocalContainerEntityManagerFactoryBean factory new LocalContainerEntityManagerFactoryBean();factory.setJpaVendorAdapter(vendorAdapter);factory.setPackagesToScan(com.lc.springBoot.jpa.entity);factory.setDataSource(writeDruidDataSource);//数据源factory.setJpaPropertyMap(jpaProperties.getProperties());factory.afterPropertiesSet();//在完成了其它所有相关的配置加载以及属性设置后,才初始化return factory.getObject();}/*** 配置事物管理器* return*/Bean(name writeTransactionManager)Primarypublic PlatformTransactionManager writeTransactionManager() {JpaTransactionManager jpaTransactionManager new JpaTransactionManager();jpaTransactionManager.setEntityManagerFactory(this.writeEntityManagerFactory());return jpaTransactionManager;} }2.先注入LocalContainerEntityManagerFactoryBean,再获取EntityManagerFactory配置:spring.jpa.database-platformorg.hibernate.dialect.MySQL5Dialect spring.jpa.databasemysql spring.jpa.generate-ddltrue #就是hibernate.hbm2ddl.auto,具体说明可以看README spring.jpa.hibernate.ddl-autoupdate #通过方法名解析sql的策略,具体说明可以看README,这里就不配置了 spring.jpa.hibernate.naming-strategyorg.hibernate.cfg.DefaultComponentSafeNamingStrategy spring.jpa.show-sqltrue Configuration EnableJpaRepositories(value com.lc.springBoot.jpa.repository,entityManagerFactoryRef writeEntityManagerFactory,transactionManagerRef writeTransactionManager) public class WriteDataSourceConfig1 {AutowiredJpaProperties jpaProperties;AutowiredQualifier(writeDruidDataSource)private DataSource writeDruidDataSource;/*** 我们通过LocalContainerEntityManagerFactoryBean来获取EntityManagerFactory实例* return*/Bean(name writeEntityManagerFactoryBean)Primarypublic LocalContainerEntityManagerFactoryBean writeEntityManagerFactoryBean(EntityManagerFactoryBuilder builder) {return builder.dataSource(writeDruidDataSource).properties(jpaProperties.getProperties()).packages(com.lc.springBoot.jpa.entity) //设置实体类所在位置.persistenceUnit(writePersistenceUnit).build();//.getObject();//不要在这里直接获取EntityManagerFactory}/*** EntityManagerFactory类似于Hibernate的SessionFactory,mybatis的SqlSessionFactory* 总之,在执行操作之前,我们总要获取一个EntityManager,这就类似于Hibernate的Session,* mybatis的sqlSession.* param builder* return*/Bean(name writeEntityManagerFactory)Primarypublic EntityManagerFactory writeEntityManagerFactory(EntityManagerFactoryBuilder builder) {return this.writeEntityManagerFactoryBean(builder).getObject();}/*** 配置事物管理器* return*/Bean(name writeTransactionManager)Primarypublic PlatformTransactionManager writeTransactionManager(EntityManagerFactoryBuilder builder) {return new JpaTransactionManager(writeEntityManagerFactory(builder));} }对于这个配置Bean(name writeEntityManagerFactoryBean)Primarypublic LocalContainerEntityManagerFactoryBean writeEntityManagerFactoryBean(EntityManagerFactoryBuilder builder) {return builder.dataSource(writeDruidDataSource).properties(jpaProperties.getProperties()).packages(com.lc.springBoot.jpa.entity) //设置实体类所在位置.persistenceUnit(writePersistenceUnit).build();//.getObject();//不要在这里直接获取EntityManagerFactory}getObject()方法可以获取到EntityManagerFactory的实例,看似跟第一种没有什么区别,但是我们不能直接用 getObject(),不然会获取不到,报空指针异常.读写分离配置自定义注入AbstractRoutingDataSourceConfiguration public class DataSourceConfig {private final static String WRITE_DATASOURCE_KEY writeDruidDataSource;private final static String READ_DATASOURCE_KEY readDruidDataSource;/*** 注入AbstractRoutingDataSource* param readDruidDataSource* param writeDruidDataSource* return* throws Exception*/Beanpublic AbstractRoutingDataSource routingDataSource(Qualifier(READ_DATASOURCE_KEY) DataSource readDruidDataSource,Qualifier(WRITE_DATASOURCE_KEY) DataSource writeDruidDataSource) throws Exception {DynamicDataSource dataSource new DynamicDataSource();MapObject, Object targetDataSources new HashMap();targetDataSources.put(WRITE_DATASOURCE_KEY, writeDruidDataSource);targetDataSources.put(READ_DATASOURCE_KEY, readDruidDataSource);dataSource.setTargetDataSources(targetDataSources);dataSource.setDefaultTargetDataSource(writeDruidDataSource);return dataSource;} }自定义注解Target({ElementType.METHOD, ElementType.TYPE})Retention(RetentionPolicy.RUNTIME)Documentedpublic interface TargetDataSource {String dataSource() default ;//数据源}使用ThreadLocal使数据源与线程绑定public class DynamicDataSourceHolder {//使用ThreadLocal把数据源与当前线程绑定private static final ThreadLocalString dataSources new ThreadLocalString();public static void setDataSource(String dataSourceName) {dataSources.set(dataSourceName);}public static String getDataSource() {return (String) dataSources.get();}public static void clearDataSource() {dataSources.remove();}} public class DynamicDataSource extends AbstractRoutingDataSource {Overrideprotected Object determineCurrentLookupKey() {//可以做一个简单的负载均衡策略String lookupKey DynamicDataSourceHolder.getDataSource();System.out.println(------------lookupKey---------lookupKey);return lookupKey;}}定义切面AspectComponentpublic class DynamicDataSourceAspect {Around(execution(public * com.lc.springBoot.jpa.service..*.*(..)))public Object around(ProceedingJoinPoint pjp) throws Throwable {MethodSignature methodSignature (MethodSignature) pjp.getSignature();Method targetMethod methodSignature.getMethod();if (targetMethod.isAnnotationPresent(TargetDataSource.class)) {String targetDataSource targetMethod.getAnnotation(TargetDataSource.class).dataSource();System.out.println(----------数据源是: targetDataSource ------);DynamicDataSourceHolder.setDataSource(targetDataSource);}Object result pjp.proceed();//执行方法DynamicDataSourceHolder.clearDataSource();return result;}}原文链接https://my.oschina.net/lengchuan/blog/882391作者轻易科技-轻易贷研发部 李水军
http://www.yutouwan.com/news/331552/

相关文章:

  • 廊坊网站建设公司wordpress新建404页面
  • 做音乐相册的网站北京上云网站建设公司
  • 如何做网站推广雷公钻如何建立wordpress
  • 电子商务网站系统规划报告网站设计风格评价
  • 申请网站建设经费昌图网站推广
  • 宁波做网站首推荣盛网络秋佐科技公司网站
  • 网站怎么去维护乐清做网站公司哪家好
  • 湖南中核建设工程公司官方网站沧州建网站
  • 在源码之家下载的网站模板可以作为自己的网站吗北京餐饮网络营销公司
  • 商城微网站建设多少钱优化网站要怎么做
  • 实验室网站模板服装箱包网站建设
  • 专门做化妆品平台的网站有哪些西安装修公司网站制作
  • 成品网站管理系统旅游类网站设计模板下载
  • 用php做网站出现的问题马鞍山建设银行网站
  • 网站备案后改域名中国建设银行官网站e路护航下载
  • 品牌网站建设堅持大蝌蚪百度搜寻网站缩略图如何添加
  • 如何做网站免费九九9九九9视频在线观看
  • 广州 网站建设公司顺德大良哪家做网站好
  • 如何做logo模板下载网站建设自己公司的网站首页
  • 获取网站访问量新余 网站建设
  • 有源码帮忙搭建网站吗武城县建设局网站
  • 网站上的用户注册怎么做的深圳住房和建设局网站登录
  • 长沙网站建设公司wordpress游戏站
  • 自己做的网站打不开中信建设有限责任公司 乔锋 电话
  • w网站建设需求说明政务微信app下载
  • 网站建设与维护总结福州营销网站建设老品牌
  • 做外贸网站赚钱吗企业策划推广
  • 长沙建设信息网站专业开发网站建设哪家好
  • 企业网站建设设置那些栏目优化网络搜索引擎
  • 如何做微信ppt模板下载网站前端面试