使用 Spring 访问数据时,有人注入 DataSource
,有人注入 SessionFactory
,还有人注入 EntityManager
,看得人眼花缭乱,无所适从。
之所以这样,是因为他们所采用的数据访问技术不同导致的。比如,早期人们使用裸 JDBC 技术,也就是 JdbcTemplate
,就需要注入 DataSource
;后来,ORM 框架Hibernate 异军突起,就要用到 SessionFactory
;再后来,各种 ORM 框架纷纷涌现,各自为政,JCP 的一帮人就看不下去了,搞了一个 JPA 的标准来统一数据访问接口,这时就需要注入 EntityManager
。