提交 7c2b76f0 编写于 作者: W wizardforcel

2020-06-04 21:51:28

上级 12efdee8
......@@ -2,9 +2,9 @@
> 原文: [https://howtodoinjava.com/hibernate/hibernate-4-using-in-memory-database-with-hibernate/](https://howtodoinjava.com/hibernate/hibernate-4-using-in-memory-database-with-hibernate/)
在我们工作的组织中,朋友经常不允许甚至访问必要的开发人员工具,例如本地数据库安装。 这也可能是由于相当正当的原因(有时似乎只是荒谬的)。 在此**Hiberate 内存数据库**教程中,我提供了一个无需安装任何数据库即可测试您的 Hiberate 代码的示例。
在我们工作的组织中,朋友经常不允许甚至访问必要的开发人员工具,例如本地数据库安装。 这也可能是由于相当正当的原因(有时似乎只是荒谬的)。 在此 **Hiberate 内存数据库**教程中,我提供了一个无需安装任何数据库即可测试您的 Hiberate 代码的示例。
This can help you in writing your application’s unit-testcases as database access could be seen as dependency by some architects.
这可以帮助您编写应用程序的单元测试用例,因为某些架构师将数据库访问视为依赖。
## 1\. 内存数据库实现
......@@ -28,11 +28,11 @@ Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:howtodoinjava", "sa"
```
这里要注意的主要事情是“ **mem:howtodoinjava** ”。 这里 ***mem*** 表示使用内存数据库,而不是任何物理数据库。
这里要注意的主要事情是“`mem:howtodoinjava`”。 这里`mem`表示使用内存数据库,而不是任何物理数据库。
#### 1.3 需要默认的用户名和密码
请注意,尽管您将必须提供默认的用户名“ sa”和一个空白密码才能连接到数据库,否则将出现以下异常。
请注意,尽管您将必须提供默认的用户名“`sa`”和一个空白密码才能连接到数据库,否则将出现以下异常。
```java
Caused by: java.sql.SQLException: Access is denied
......@@ -49,7 +49,7 @@ Caused by: java.sql.SQLException: Access is denied
现在,在下面的源代码文件中查找使用 hibernate 进行内存数据库访问的示例。
#### 2.1 hibernate.cfg.xml
#### 2.1 `hibernate.cfg.xml`
```java
<?xml version="1.0" encoding="utf-8"?>
......@@ -72,7 +72,7 @@ Caused by: java.sql.SQLException: Access is denied
```
#### 2.2\. HibernateUtil.java
#### 2.2\. `HibernateUtil.java`
```java
package com.howtodoinjava.demo.util;
......@@ -119,7 +119,7 @@ public class HibernateUtil
```
#### 2.3\. EmployeeEntity.java
#### 2.3\. `EmployeeEntity.java`
```java
package com.howtodoinjava.demo.entity;
......@@ -193,7 +193,7 @@ public class EmployeeEntity implements Serializable
现在测试上面的代码。
#### 2.4\. TestHibernate.java
#### 2.4\. `TestHibernate.java`
```java
package com.howtodoinjava.test;
......@@ -236,9 +236,9 @@ Hibernate: insert into Employee (EMAIL, FIRST_NAME, LAST_NAME, ID) values (?, ?,
![hibernate-hsqldb-in-memory-database-example](img/d11655b353131fc3858837f22c91b16a.png)
如果在设置本示例的 maven 依赖项方面需要任何帮助,请遍历 pom.xml 文件。
如果在设置本示例的 maven 依赖项方面需要任何帮助,请遍历`pom.xml`文件。
#### 3.1 pom.xml
#### 3.1 `pom.xml`
```java
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd;
......
# Hibernate Validator – Java Bean 验证示例
# Hibernate 验证器 – Java Bean 验证示例
> 原文: [https://howtodoinjava.com/hibernate/hibernate-validator-java-bean-validation/](https://howtodoinjava.com/hibernate/hibernate-validator-java-bean-validation/)
使用**Hiberate 验证器**验证 Java bean 字段的 Java 示例。 **Bean 验证 API 2**`JSR-380`)提供了一些流行的注释,可以将这些注释附加到每个 Bean 属性,以保持数据完整性。
使用 **Hiberate 验证器**验证 Java bean 字段的 Java 示例。 **Bean 验证 API 2**`JSR-380`)提供了一些流行的注释,可以将这些注释附加到每个 Bean 属性,以保持数据完整性。
## 1\. Maven 依赖
以下是必需的**Hiberate 验证器 maven 依赖项**
以下是必需的 **Hiberate 验证器 maven 依赖项**
Bean 验证允许错误消息中包含表达式。 要解析这些表达式,我们必须添加对表达式语言 API 以及该 API 实现的依赖。 我使用 Jboss 的`javax.el`中实现的`javax.el-api`规范添加了它们。
......@@ -48,7 +48,7 @@ Bean 验证允许错误消息中包含表达式。 要解析这些表达式,
```
## 2\. Hibernate Validator 示例
## 2\. Hibernate 验证器示例
#### 2.1 带有验证注释的模型
......@@ -85,7 +85,7 @@ public class User {
```
#### 2.2 讯息资源
#### 2.2 消息属性
默认情况下,所有消息都是从类路径中的`ValidationMessages.properties`文件解析的。 如果文件不存在,则不会发生[消息解析](https://howtodoinjava.com/spring-core/resolving-text-messages-in-spring-resourcebundlemessagesource-example/)
......@@ -214,15 +214,16 @@ Validator validator = Validation.byDefaultProvider()
现在,当我们知道如何以编程方式使用 Hiberate 验证器时。 让我们看一下可以在 bean 类中使用的所有注释。
#### 5.1 Bean 验证注
#### 5.1 Bean 验证注
| 注解 | 描述 |
| --- | --- |
| `@Digits(integer=, fraction=)` | 检查注释的值是否为最多`integer`位和小数`fractional`位的数字。 |
| `@Email` | 检查指定的字符序列是否为有效的电子邮件地址。 |
| `@Max(value=)` | 检查带注释的值是否小于或等于指定的最大值。 |
| `@Min(value=)` | 检查带注释的值是否大于或等于指定的最小值 |
| `@NotBlank` | 检查带注释的字符序列不为空,并且修剪后的长度大于 0。 |
| `@NotEmpty` | 检查带注释的元素是否不为 null 或为空。 |
| `@NotEmpty` | 检查带注释的元素是否不为`null`或为空。 |
| `@Null` | 检查带注释的值是否为空 |
| `@NotNull` | 检查带注释的值不为空 |
| `@Pattern(regex=, flags=)` | 考虑给定的`flag`匹配项,检查带注释的字符串是否与正则表达式`regex`匹配 |
......@@ -233,11 +234,12 @@ Validator validator = Validation.byDefaultProvider()
| `@FutureOrPresent` | 检查带注释的日期是现在还是将来。 |
| `@PastOrPresent` | 检查带注释的日期是过去还是现在。 |
#### 5.2 Hiberate 验证器特定的注
#### 5.2 Hiberate 验证器特定的注
除了 Bean Validation API 定义的约束之外,Hibernate Validator 还提供了以下有用的自定义约束。
除了 Bean 验证 API 定义的约束之外,Hibernate 验证器还提供了以下有用的自定义约束。
| Annotation | Description |
| 注解 | 描述 |
| --- | --- |
| `@CreditCardNumber( ignoreNonDigitCharacters=)` | 检查带注释的字符序列是否通过了 [Luhn 校验和](https://en.wikipedia.org/wiki/Luhn_algorithm)测试。 请注意,此验证旨在检查用户错误,而不是信用卡有效性! |
| `@Currency(value=)` | 检查带注释的`javax.money.MonetaryAmount`的货币单位是否为指定货币单位的一部分。 |
| `@EAN` | 检查带注释的字符序列是否为有效的 [EAN](https://en.wikipedia.org/wiki/International_Article_Number_%28EAN%29) 条形码。 默认值为 EAN-13。 |
......@@ -254,4 +256,5 @@ Validator validator = Validation.byDefaultProvider()
参考文献:
[Bean 验证 2.0](https://beanvalidation.org/)
[Hiberate 验证器注释处理器](http://hibernate.org/validator/tooling/)
\ No newline at end of file
[Hiberate 验证器注解处理器](http://hibernate.org/validator/tooling/)
\ No newline at end of file
# Hibernate Validator CDI – @HibernateValidator 示例
# Hibernate 验证器 CDI – `@HibernateValidator`示例
> 原文: [https://howtodoinjava.com/hibernate/hibernate-validator-cdi/](https://howtodoinjava.com/hibernate/hibernate-validator-cdi/)
注入默认 Java bean 验证类实现的 Hiberate 验证器 CDI 的 Java 示例。 `javax.validation.ValidatorFactory`[`javax.validation.Validator`](https://docs.oracle.com/javaee/7/api/javax/validation/Validator.html)具有 **hibernate-validator-cdi** 依赖性。 如果应用具有多个[`org.hibernate.validator.cdi.HibernateValidator`](https://docs.jboss.org/hibernate/validator/5.1/api/org/hibernate/validator/cdi/HibernateValidator.html)之类的验证器实现,还应该学习注入专门的验证器。
注入默认 Java bean 验证类实现的 Hiberate 验证器 CDI 的 Java 示例。 `javax.validation.ValidatorFactory`[`javax.validation.Validator`](https://docs.oracle.com/javaee/7/api/javax/validation/Validator.html)具有`hibernate-validator-cdi`依赖性。 如果应用具有多个[`org.hibernate.validator.cdi.HibernateValidator`](https://docs.jboss.org/hibernate/validator/5.1/api/org/hibernate/validator/cdi/HibernateValidator.html)之类的验证器实现,还应该学习注入专门的验证器。
请注意,如果您的应用在开箱即用的环境中运行,那么您无需添加其他依赖项即可运行此示例。 例如,Spring 框架隐式提供了此类 CDI 基础结构,因此请不要在 Spring 框架中使用[Hiberate 验证器 CDI](http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-integration-with-cdi)
请注意,如果您的应用在开箱即用的环境中运行,那么您无需添加其他依赖项即可运行此示例。 例如,Spring 框架隐式提供了此类 CDI 基础结构,因此请不要在 Spring 框架中使用 [Hiberate 验证器 CDI](http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-integration-with-cdi)
对于其他应用,例如独立的 Java 应用,可能需要它才能使用注释创建`HibernateValidator`
## 1\. Hibernate Validator CDI Maven 依赖关系
## 1\. Hibernate 验证器 CDI Maven 依赖关系
下面列出了与 Hiberate 验证器一起使用的所有必需依赖项。
......@@ -66,7 +66,7 @@
```
## 2\. 用验证注释注释的模型类
## 2\. 带有验证注解的模型类
一个带有字段验证注释的简单 Java 类。
......@@ -108,7 +108,7 @@ public class User {
```
## 3\. 注入默认值并 Hiberate javax.validation.Validator
## 3\. 注入默认的和 Hiberate `javax.validation.Validator`
使用`@Inject`注释注入`ValidatorFactory``Validator`。 注入的 Bean 是默认的验证器工厂实例和验证器实例。
......@@ -121,7 +121,7 @@ private static Validator validator;
```
如果您正在使用多个 Bean 验证供应器,则可以通过使用`@HibernateValidator`限定符注释注入点来确保注入了 Hibernate Validator 的 factory 和 validator
如果您正在使用多个 Bean 验证供应器,则可以通过使用`@HibernateValidator`限定符注释注入点来确保注入了 Hibernate 验证器的工厂和验证器
```java
import org.hibernate.validator.cdi.HibernateValidator;
......
# [已解决] – UnexpectedTypeException-找不到约束验证器
# [已解决] `UnexpectedTypeException` - 找不到约束验证器
> 原文: [https://howtodoinjava.com/hibernate/unexpectedtypeexception-error/](https://howtodoinjava.com/hibernate/unexpectedtypeexception-error/)
......@@ -26,7 +26,7 @@ Exception in thread "main" javax.validation.UnexpectedTypeException: HV000030: N
```
例如,您收到上述错误,您尝试将`@NotBlank`注释放在任何非字符串类型的字段中,例如 `java.lang.Long`类型。
例如,您收到上述错误,您尝试将`@NotBlank`注释放在任何非字符串类型的字段中,例如`java.lang.Long`类型。
```java
public class User {
......
# Hiberate 注释
\ No newline at end of file
# Hiberate 注解
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册