配置spring整合jpa自动生成数据表
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd">
<!-- 扫描 @Server @Controller @Repository -->
<context:component-scan base-package="cn.nwtxxb"/>
<!-- 加载properties文件 -->
<context:property-placeholder location="classpath:config.properties" />
<!-- 数据库连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 整合jpa配置 -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="cn.nwtxxb.bos.domain"/>
<property name="persistenceProvider">
<bean class="org.hibernate.jpa.HibernatePersistenceProvider"/>
</property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="true"/>
<property name="database" value="ORACLE"/>
<property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect"/>
<property name="showSql" value="true"/>
</bean>
</property>
<property name="jpaDialect">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect"/>
</property>
<property name="jpaPropertyMap">
<map>
<entry key="hibernate.query.substitutions" value="true 1,false 0"/>
<entry key="hibernate.default_batch_fetch_size" value="16"/>
<entry key="hibernate.max_fetch_depth" value="2"/>
<entry key="hibernate.generate_statistics" value="true"/>
<entry key="hibernate.bytecode.use_reflection_optimizer" value="true"/>
<entry key="hibernate.cache.use_query_cache" value="false"/>
</map>
</property>
</bean>
<!-- jpa事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<!-- 注解管理事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- 整合spring data jpa -->
<!-- <jpa:repository base-package="cn.nwtxxb.bos.dao"/> -->
</beans>
档案类Archive:
/**
* @description:档案类,记录所有的分类信息,在子档中
*/
@Entity
@Table(name = "T_ARCHIVE")
public class Archive {
@Id
@GeneratedValue
@Column(name = "C_ID")
private Integer id; // 主键
@Column(name = "C_ARCHIVE_NUM", unique = true )
private String archiveNum;// 档案编号
@Column(name = "C_ARCHIVE_NAME")
private String archiveName; // 档案名称
@Column(name = "C_REMARK")
private String remark; // 备注
@Column(name = "C_HASCHILD")
private Integer hasChild;// 是否分级 0代表不分级 1代表分级
@Column(name = "C_OPERATING_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date operatingTime;// 操作时间
@Column(name = "C_OPERATOR")
private String operator; // 操作员
@Column(name = "C_OPERATING_COMPANY")
private String operatingCompany; // 操作单位
@OneToMany(mappedBy = "archive")
private Set<SubArchive> subArchives = new HashSet<>(); // 子档案
}
区域Area类:
/**
* @description:地域信息实体类,主要包含 省市区(县)
*/
@Entity
@Table(name = "T_AREA")
public class Area {
@Id
@Column(name = "C_ID")
private String id;
@Column(name = "C_PROVINCE")
private String province; // 省
@Column(name = "C_CITY")
private String city; // 城市
@Column(name = "C_DISTRICT")
private String district; // 区域
@Column(name = "C_POSTCODE")
private String postcode; // 邮编
@Column(name = "C_CITYCODE")
private String citycode; // 城市编码
@Column(name = "C_SHORTCODE")
private String shortcode; // 简码
@OneToMany(mappedBy = "area")
private Set<SubArea> subareas = new HashSet<SubArea>();
}
快递员类Courier
/**
* @description:快递员
*/
@Entity
@Table(name = "T_COURIER")
public class Courier {
@Id
@GeneratedValue
@Column(name = "C_ID")
private Integer id; // 主键
@Column(name = "C_COURIER_NUM", unique = true)
private String courierNum; // 快递员工号
@Column(name = "C_NAME")
private String name; // 快递员姓名
@Column(name = "C_TELEPHONE")
private String telephone; // 快递员联系电话
@Column(name = "C_PDA")
private String pda; // PDA号
@Column(name = "C_DELTAG")
private Character deltag; // 作废标志 1 为标记作废
@Column(name = "C_CHECK_PWD")
private String checkPwd; // 查台密码
@Column(name = "C_TYPE")
private String type; // 取件员类型
@Column(name = "C_COMPANY")
private String company; // 单位
@Column(name = "C_VEHICLE_TYPE")
private String vehicleType; // 车辆类型
@Column(name = "C_VEHICLE_NUM")
private String vehicleNum; // 车牌号
@ManyToOne
@JoinColumn(name = "C_STANDARD_ID")
private Standard standard;
@ManyToOne
@JoinColumn(name = "C_TAKETIME_ID")
private TakeTime takeTime;
@ManyToMany(mappedBy = "couriers")
private Set<FixedArea> fixedAreas = new HashSet<FixedArea>();
}
定区FixedArea类:
/**
* @description:定区
*/
@Entity
@Table(name = "T_FIXED_AREA")
public class FixedArea {
@Id
@Column(name = "C_ID")
private String id; // 主键
@Column(name = "C_FIXED_AREA_NAME", unique = true)
private String fixedAreaName; // 定区名称
@Column(name = "C_FIXED_AREA_LEADER", unique = true)
private String fixedAreaLeader;// 定区负责人
@Column(name = "C_TELEPHONE")
private String telephone;// 联系电话
@Column(name = "C_COMPANY")
private String company; // 所属单位
@Column(name = "C_OPERATING_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date operatingTime;// 操作时间
@Column(name = "C_OPERATOR")
private String operator; // 操作员
@Column(name = "C_OPERATING_COMPANY")
private String operatingCompany; // 操作单位
@OneToMany(mappedBy = "fixedArea")
private Set<SubArea> subareas = new HashSet<SubArea>(0);
@ManyToMany
@JoinTable(name = "T_FIXEDAREA_COURIER", joinColumns = { @JoinColumn(name = "C_FIXED_AREA_ID", referencedColumnName = "C_ID") }, inverseJoinColumns = { @JoinColumn(name = "C_COURIER_ID", referencedColumnName = "C_ID") })
private Set<Courier> couriers = new HashSet<Courier>(0);
}
收派标准Standard类
/**
* @description:收派标准
*/
@Entity
@Table(name = "T_STANDARD")
public class Standard {
@Id
@GeneratedValue
@Column(name = "C_ID")
private Integer id; // 主键
@Column(name = "C_NAME")
private String name; // 标准名称
@Column(name = "C_MIN_WEIGHT")
private Integer minWeight; // 最小重量
@Column(name = "C_MAX_WEIGHT")
private Integer maxWeight; // 最大重量
@Column(name = "C_MIN_LENGTH")
private Integer minLength; // 最小长度
@Column(name = "C_MAX_LENGTH")
private Integer maxLength; // 最大重量
@Column(name = "C_OPERATING_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date operatingTime;// 操作时间
@Column(name = "C_OPERATOR")
private String operator; // 操作员
@Column(name = "C_OPERATING_COMPANY")
private String operatingCompany; // 操作单位
}
子档案SubArchive类:
/**
* @description:子档案类,记录了档案分级后的子信息
*/
@Entity
@Table(name = "T_SUB_ARCHIVE")
public class SubArchive {
@Id
@GeneratedValue
@Column(name = "C_ID")
private Integer id; // 主键
@Column(name = "C_SUB_ARCHIVE_NAME")
private String subArchiveName; // 子档名称
@Column(name = "C_MNEMONIC_CODE")
private String mnemonicCode; // 助记码
@Column(name = "C_REMARK")
private String remark; // 备注
@Column(name = "C_MOTHBALLED")
private Character mothballed; // 封存标志
@Column(name = "C_OPERATING_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date operatingTime;// 操作时间
@Column(name = "C_OPERATOR")
private String operator; // 操作员
@Column(name = "C_OPERATING_COMPANY")
private String operatingCompany; // 操作单位
@ManyToOne
@JoinColumn(name = "C_ARCHIVE_ID")
private Archive archive; // 关联基本档案信息
}
分区SubArea类
/**
* @description:分区
*/
@Entity
@Table(name = "T_SUB_AREA")
public class SubArea {
@Id
@Column(name = "C_ID")
private String id;
@Column(name = "C_START_NUM")
private String startNum; // 起始号
@Column(name = "C_ENDNUM")
private String endNum; // 终止号
@Column(name = "C_SINGLE")
private Character single; // 单双号
@Column(name = "C_KEY_WORDS")
private String keyWords; // 关键字
@Column(name = "C_ASSIST_KEY_WORDS")
private String assistKeyWords; // 辅助关键字
@ManyToOne
@JoinColumn(name = "C_AREA_ID")
private Area area; // 区域
@ManyToOne
@JoinColumn(name = "C_FIXEDAREA_ID")
private FixedArea fixedArea; // 定区
}
收派时间TakeTime类
/**
* @description:收派时间管理
*/
@Entity
@Table(name = "T_TAKE_TIME")
public class TakeTime {
@Id
@GeneratedValue
@Column(name = "C_ID")
private Integer id; // 主键
@Column(name = "C_NAME")
private String name; // 收派时间名称
@Column(name = "C_NORMAL_WORK_TIME")
private String normalWorkTime; // 平常上班时间
@Column(name = "C_NORMAL_DUTY_TIME")
private String normalDutyTime; // 平常下班时间
@Column(name = "C_SAT_WORK_TIME")
private String satWorkTime; // 周六上班时间
@Column(name = "C_SAT_DUTY_TIME")
private String satDutyTime; // 周六下班时间
@Column(name = "C_SUN_WORK_TIME")
private String sunWorkTime; // 周日上班时间
@Column(name = "C_SUN_DUTY_TIME")
private String sunDutyTime; // 周日下班时间
@Column(name = "C_STATUS")
private String status; // 状态
@Column(name = "C_COMPANY")
private String company; // 所属公司
@Column(name = "C_OPERATING_TIME")
@Temporal(TemporalType.TIMESTAMP)
private Date operatingTime;// 操作时间
@Column(name = "C_OPERATOR")
private String operator; // 操作员
@Column(name = "C_OPERATING_COMPANY")
private String operatingCompany; // 操作单位
}
车辆Vehicle类
/**
* @description:车辆
*/
@Entity
@Table(name = "T_VEHICLE")
public class Vehicle {
@Id
@GeneratedValue
@Column(name = "C_ID")
private Integer id;
@Column(name = "C_ROUTE_TYPE")
private String routeType; // 线路类型
@Column(name = "C_ROUTE_NAME")
private String routeName; // 线路名称
@Column(name = "C_SNIPPER")
private String shipper; // 承运商
@Column(name = "C_DRIVER")
private String driver; // 司机
@Column(name = "C_VEHICLE_NUM")
private String vehicleNum; // 车牌号
@Column(name = "C_TELEPHONE")
private String telephone; // 电话
@Column(name = "C_VEHICLE_TYPE")
private String vehicleType;// 车型
@Column(name = "C_TON")
private Integer ton; // 吨控
@Column(name = "C_REMARK")
private String remark;// 备注
}