《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)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券