相关环境
环境等事宜,参见 IDEA/SpringMVC/Jetty/Maven 配置
具体步骤
在 src/main/java中新建2个 package, model 和 repository.
1. Mysql 相关配置。
spring_study |
---|
user |
blog,其中有个外键 user_id 链接到 user 表 |
建表sql:
CREATE TABLE `spring_study_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nickname` varchar(45) DEFAULT NULL,
`password` varchar(45) DEFAULT NULL,
`first_name` varchar(45) DEFAULT NULL,
`last_name` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name` (`nickname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
create table jack_study.blog(
id int auto_increment,
title varchar(100),
content varchar(255),
user_id int(11),
pub_date date,
primary key (id),
foreign key(user_id) references jack_study.spring_study_user(id)
);
2. persistemce.xml 的配置
- 右键项目,选择 Add Framework Support,在弹出框中选择
Hibernate
.
此时,resources 中自动生成了persistence.xml
文件。 - 数据库相关配置。左边点击 Persistence(如果没有则点击下面的小方框),右键选择
Generate Persistence Mapping/By Database Schema
,具体如下图
persistence_mapping.png -
配置数据源,点击 Choose Data Source 右边的三个点选择数据源,在弹出的界面左上角选择 “+”,选择 Mysql。配置如下:
data_source_and_driver.png - 打开model包,发现生成了两个 Java Bean,在 SpringMVC中成为两个实体,
BlogEntity / UserEntity
- 把自动生成的代码中的
import java.sql.Date;
改成import java.util.Date;
3. 配置数据库
- mvc-dispatcher-servlet.xml 添加下列配置
<!-- 表示JPA Repository所在的包 -->
<jpa:repositories base-package="com.example.repository"/> # 注意自己的包名
<!-- 链接到persistence.xml -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="defaultPersistenceUnit"/>
</bean>
<!-- 事务管理 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<!-- 开启事务管理注解 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
- 填充 persistence.xml,将 persistence-unit 的 name改为 defaultPersistenceUnit。在下面的文件中,我添加了一些更为详细的配置:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="defaultPersistenceUnit">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<!-- 使用MySQL方言 -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<!-- 数据库连接的URL地址 -->
<property name="hibernate.connection.url"
value="jdbc:mysql://localhost:3306/springdemo"/>
<!-- 数据库连接的驱动 -->
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<!-- 数据库连接的用户名 -->
<property name="hibernate.connection.username" value="root"/>
<!-- 数据库连接的密码 -->
<property name="hibernate.connection.password" value="111111"/>
<!-- 显示SQL语句 -->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.connection.useUnicode" value="true"/>
<property name="hibernate.connection.characterEncoding" value="UTF-8"/>
<!-- 在显示SQL语句时格式化语句 -->
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="false"/>
<!-- 自动输出schema创建DDL语句 -->
<property name="hbm2ddl.auto" value="update"/>
<!-- 数据库连接超时后自动重连 -->
<property name="hibernate.connection.autoReconnect" value="true"/>
<property name="connection.autoReconnectForPools" value="true"/>
<property name="connection.is-connection-validation-required" value="true"/>
</properties>
</persistence-unit>
</persistence>
4 测试
重启程序,如果没有报错,说明配置成功。