专栏首页怀英的自我修炼《Spring实战》摘录 - 20

《Spring实战》摘录 - 20

191

问题:#11.2 | 什么是JPA

回答:Java持久化API(Java Persistence API,JPA)

192

问题:#11.2.1-1 | JPA定义了两种类型的实体管理器

A:

  • 应用程序管理类型(Application-managed):当应用程序向实体管理器工厂直接请求实体管理器时,工厂会创建一个实体管理器。在这种模式下,程序要负责打开或关闭实体管理器并在事务中对其进行控制。这种方式的实体管理器适合于不运行在Java EE容器中的独立应用程序。
  • 容器管理类型(Container-managed):实体管理器由Java EE创建和管理。应用程序根本不与实体管理器工厂打交道。相反,实体管理器直接通过注入或JNDI来获取。容器负责配置实体管理器工厂。这种类型的实体管理器最适用于Java EE容器,在这种情况下会希望在persistence.xml指定的JPA配置之外保持一些自己对JPA的控制。

193

问题:#11.2.1-2 | JPA中持久化单元是指什么

回答:持久化单元是同一个数据源下的一个或多个持久化类

194

问题:#11.2.1-3 | pring提供了多个JPA厂商适配器

A:

  • EclipseLinkJpaVendorAdapter
  • HibernateJpaVendorAdapter
  • OpenJpaVendorAdapter
  • TopLinkJpaVendorAdapter(在Spring 3.1版本中,已经将其废弃了)

195

问题:#11.2.1-4 | Hibernate的JPA适配器支持多种数据库,可以通过其database属性配置使用哪个数据库

A:

  • IBM DB2 --- DB2
  • Apache Derby --- DERBY
  • H2 --- H2
  • Hypersonic --- HSQL
  • Informix --- INFORMIX
  • MySQL --- MYSQL
  • Oracle --- ORACLE
  • PostgresQL --- POSTGRESQL
  • Microsoft SQL Server --- SQLSERVER
  • Sybase --- SYBASE

196

问题:#12.1-1 | Spring Data MongoDB提供了三种方式在Spring应用中使用MongoDB

A:

  • 通过注解实现对象-文档映射;
  • 使用MongoTemplate实现基于模板的数据库访问;
  • 自动化的运行时Repository生成功能。

197

问题:#12.1.1-1 | Spring Data MongoDB的必要配置

package orders.config:import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.mongodb.core.MongoFactoryBean;import org.springframework.data.mongodb.core.Mongooperations;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;import com.mongodb.Mongo;
@Configuration@EnableMongoRepositories(basePackages="orders.db") //启用MongoDB的Repository功能public class MongoConfig{  @Bean  public MongoFactoryBean mongo(){ //MongoClient bean     MongoFactoryBean mongo new MongoFactoryBean();    mongo.setHost("localhost");    return mongo;  }    @Bean  public Mongooperations mongoTempla(Mongo mongo){//MongoTemplate bean    return new MongoTemplate(mongo,"OrdersDB");  }}

198

问题:#12.1.1-2 | 借助@EnableMongoRepositories启用Spring

package orders.configimport org.springframework.context.annotation.Configuration;import org.springframework.data.mongodb.config.AbstractMongoconfiguration; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; import com.mongodb.Mongo;import com.mongodb.Mongoclient;
@Configuration@EnableMongoRepositories("orders.db")public class Mongoconfig extends AbstractMongoconfiguration{  @Override  protected String getDatabaseName(){ //制定数据库名称    return "OrdersDB";  }    @override  public Mongo mongo() throws Exception { //创建Mongo客户端    return new Mongoclient();  }}

199

问题:#12.1.1-3 | 创建MongoClient来访问需要认证的MongoDB服务

@Autowiredprivate Environment env;
@overridepublic Mongo mongo() throws Exception {  Mongocredential credential = Mongocredential createMongocRcredential(//创建 MongoDB凭证     env.getProperty("mongo. username"),    "OrdersDB",    env.getProperty("mongo.password").tocharArray());
  return new Mongoclient( //创建 MongoClient     new ServerAddress("localhost", 37017),    Arrays.asList(credential));}

200

问题:#12.1.1-4 | Spring Data MongoDB注解将Java类型映射为文档 package orders;import java.util.Collection;import java.util.LinkedHashset;import org.springframework.dataannotation.Id:import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Field; @Document //这是一个文档public class Order { @Id private String id;//指定ID @Field("client") private String customer;//覆盖默认的域名 private String type; private Collection<Item> items new LinkedHashSet<Item>(); public String getCustomer()( return customer; } public void setCustomer(String customer){ this customer customer; } public String getType(){ return type; } public void setType(String type){ this.type = type; } public Collection<Item> getItems(){ return items; } public void setItems(Collection<Item> items){ this.items= items; } public String getId(){ return id; }}

本文分享自微信公众号 - 怀英的自我修炼(hydzwxl),作者:怀英Qiu

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《Spring实战》摘录 - 21

    问题: #12.3.1 | Spring Data Redis为四种Redis客户端实现提供了连接工厂

    用户1335799
  • 《Spring实战》摘录 - 24

    Q: #17.1.1-1 | 在异步消息中有两个主要的概念:消息代理(message broker)和目的地(destination) A: 当一个应用发送消息...

    用户1335799
  • 《Spring实战》摘录 - 17

    问题: #9.1.3-2 | Spring Security必须配置在一个什么样的bean中

    用户1335799
  • 由浅入深,讲解 spring 实战详细使用——spring 源码篇

    首先,这篇文章不会详细的深入底层源码,只是基于注解和配置来说说我们的 spring 的使用,别小看基础,保证有你没用过的注解和配置,走起。

    淡定的蜗牛
  • java架构之路-(spring源码篇)由浅入深-spring实战详细使用

      今天我更新了一篇jvm垃圾回收的算法和垃圾回收器的内部逻辑,但是看的人不多啊......貌似大家还是比较喜欢看源码吧,毕竟实战要比理论用的多。

    小菜的不能再菜
  • 【SpringMVC】SpringMVC基础-静态资源映射、拦截器配置、@ControllerAdvice与其他基本配置

    Spring MVC的定制配置需要我们的配置类继承一个WebMvcConfigurerAdapter类,并在此类使用@EnableWebMvc注解,来开启对Sp...

    谙忆
  • SpringBoot整合RabbitMQ

    RabbitMQ是开源消息队列系统,用erlang语言开发。如果不了解可以查看官网http://www.rabbitmq.com/ 这篇文章介绍一个spring...

    dalaoyang
  • Spring 中实现事务的方式

    Spring 并不直接支持事务,只有当数据库支持事务时,Spring 才支持事务,Spring 只不过简化了开发人员实现事务的步骤。 Spring 提供了两种...

    水货程序员
  • Spring Boot + Spring Cloud 构建微服务系统(二):服务消费和负载(Ribbon)

    在上一篇教程中,我们是这样调用服务的,先通过 LoadBalancerClient 选取出对应的服务,然后使用 RestTemplate 进行远程调用。

    朝雨忆轻尘
  • 学习学习SpringSecurity

    SpringSecurity是Spring下的一个安全框架,与shiro 类似,一般用于用户认证(Authentication)和用户授权(Authorizat...

    mySoul

扫码关注云+社区

领取腾讯云代金券