有人为初学者提供了一个关于Spring + hibernate + postgresql(mysql)for mave项目的好教程吗?请shrare。
我在互联网上发现了很多教程,但大多数(全部)教程已经过时了。我一直在尝试设置3天的权利,但无法做到正确。很难过,现在我不知道哪一个是正确的:(
谢谢
答案 0 :(得分:1)
查看http://spring.io/guides处的指南 - 特别是Spring Boot应该简化设置。
答案 1 :(得分:0)
从开发角度来看,最快的方法是使用像@stivlo
这样的Spring Boot。 Spring Boot允许您使用各种Spring项目快速启动项目,并相当快速地创建数据感知Java应用程序。如果您希望通过深入了解详细信息来学习堆栈,则应阅读指南和项目文档。
简单来说,如果您希望使用Spring创建一个数据驱动的应用程序,那么最好将Spring Data及其子项目与Spring Core一起使用。通常,您可以使用以下技术来简化开发:
此堆栈最常见的开发工作流程将是:
JpaRepository
的接口生成数据访问层,以实现开箱即用的数据库连接。示例应用是available on Github。它具有以下内容:
org.example.domain.Person
。org.example.data.PersonRepository
的数据访问接口。org.example.service.PersonService
的业务逻辑类。org.example.web.PersonController
的消费者类。springDataContext.xml
,springServiceContext.xml
和springWebContext.xml
。这些可能是一个文件,但是已经创建为单独的文件,以便更好地控制Spring如何处理每个层中的托管组件。该应用程序使用Scala作为编程语言以简化代码,但等效的Java代码将类似。 Hibernate用作持久性提供程序,H2用作内存数据库作为持久性存储。通过springDataContext.xml
中的配置,可以使用其他适当的替代方法轻松替换它们,而无需对已编译的代码进行任何更改。
您可以调整此应用程序的任何部分以满足特定需求,例如,摆脱Spring Data JPA并将其替换为Spring JdbcTemplate
以用于手动编码SQL等。
答案 2 :(得分:0)
在这里查看一个非常简单的示例,说明如何在 Sping Boot Web应用程序(使用JPA + Hibernate)中使用 MySQL :http://blog.netgloo.com/2014/08/17/use-mysql-database-in-a-spring-boot-web-application-through-hibernate/
您应该在pom.xml
文件中添加以下依赖项:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.5.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
在application.properties
文件中设置数据库配置:
# Database
db.driver: com.mysql.jdbc.Driver
db.url: jdbc:mysql://localhost:8889/coderpills
db.username: root
db.password: root
# Hibernate
hibernate.dialect: org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql: true
hibernate.hbm2ddl.auto: update
entitymanager.packagesToScan: coderpills
创建一个Spring配置java类(例如DatabaseConfig.java
):
@Configuration
@EnableTransactionManagement
public class DatabaseConfig {
@Value("${db.driver}")
private String DB_DRIVER;
@Value("${db.password}")
private String DB_PASSWORD;
@Value("${db.url}")
private String DB_URL;
@Value("${db.username}")
private String DB_USERNAME;
@Value("${hibernate.dialect}")
private String HIBERNATE_DIALECT;
@Value("${hibernate.show_sql}")
private String HIBERNATE_SHOW_SQL;
@Value("${hibernate.hbm2ddl.auto}")
private String HIBERNATE_HBM2DDL_AUTO;
@Value("${entitymanager.packagesToScan}")
private String ENTITYMANAGER_PACKAGES_TO_SCAN;
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(DB_DRIVER);
dataSource.setUrl(DB_URL);
dataSource.setUsername(DB_USERNAME);
dataSource.setPassword(DB_PASSWORD);
return dataSource;
}
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource());
sessionFactoryBean.setPackagesToScan(ENTITYMANAGER_PACKAGES_TO_SCAN);
Properties hibernateProperties = new Properties();
hibernateProperties.put("hibernate.dialect", HIBERNATE_DIALECT);
hibernateProperties.put("hibernate.show_sql", HIBERNATE_SHOW_SQL);
hibernateProperties.put("hibernate.hbm2ddl.auto", HIBERNATE_HBM2DDL_AUTO);
sessionFactoryBean.setHibernateProperties(hibernateProperties);
return sessionFactoryBean;
}
@Bean
public HibernateTransactionManager transactionManager() {
HibernateTransactionManager transactionManager =
new HibernateTransactionManager();
transactionManager.setSessionFactory(sessionFactory().getObject());
return transactionManager;
}
}
然后你可以创建一个实体类,例如User
类:
@Entity
@Table(name="users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long id;
@NotNull
public String email;
@NotNull
public String name;
public User() { }
public User(long id) {
this.id = id;
}
public User(String email, String name) {
this.email = email;
this.name = name;
}
}
使用其DAO对象:
@Repository
@Transactional
public class UserDao {
@Autowired
private SessionFactory _sessionFactory;
private Session getSession() {
return _sessionFactory.getCurrentSession();
}
public void save(User user) {
getSession().save(user);
}
// Other methods
// ...
}
最后,您可以使用控制器内的DAO对象自动装配它:
@Controller
public class UserController {
@Autowired
private UserDao _userDao;
// You can use the UserDao methods in this controller
// ...
}
修改上面的示例代码以与PostgresSQL而不是MySQL建立连接应该不难。