Hibernate 如果数据在进入数据库之前需要修剪,您会将其放入哪一层

Hibernate 如果数据在进入数据库之前需要修剪,您会将其放入哪一层,hibernate,jsf,Hibernate,Jsf,在进入数据库之前,需要对所有数据进行修剪。我目前在JSF中使用hibernate。 你会把这个逻辑放在哪里?在hibernate实体bean或JSF支持bean中? 什么是优点和缺点。还有其他建议吗 如果没有理由不修剪应用程序中的任何位置的数据,我会在数据输入点对其进行修剪。这就省去了在应用程序的不同区域修剪值的麻烦。在视图侧进行修剪。您可以为创建一个JSF 或者,当您仍然使用JSF1.2时,请按如下方式在faces config.xml中删除并注册它 <converter>

在进入数据库之前,需要对所有数据进行修剪。我目前在JSF中使用hibernate。 你会把这个逻辑放在哪里?在hibernate实体bean或JSF支持bean中?
什么是优点和缺点。还有其他建议吗

如果没有理由不修剪应用程序中的任何位置的数据,我会在数据输入点对其进行修剪。这就省去了在应用程序的不同区域修剪值的麻烦。

在视图侧进行修剪。您可以为创建一个JSF

或者,当您仍然使用JSF1.2时,请按如下方式在
faces config.xml
中删除并注册它

<converter>
    <converter-for-class>java.lang.String</converter-for-class>
    <converter-class>com.example.converters.StringTrimmer</converter-class>
</converter>

java.lang.String
com.example.converters.StringTrimmer
无论哪种方式,它都将应用于
字符串
类型的所有输入属性,而无需更改任何其他内容


由于内部设计的原因,这在JSF 1.1或更早版本上是不可能的。

我不同意关于这个问题的其他答案。我在一个项目中遇到了同样的情况,我们的解决方案是创建一个自定义的Hibernate映射,称为“TrimmedString”,默认情况下,我们将其应用于项目中的所有字符串属性。事实证明,这比将此逻辑应用于我们应用程序的任何部分都要好,因为它实际上并不关心如何修剪数据(这是管道代码,而不是业务)。另外,如果您有两种将数据导入系统的方法(例如,Web UI和Web服务),那么直接将其作为Hibernate应用可以避免出现问题。

我很感谢您的回答。我尝试过其他建议。这对我最合适。
<converter>
    <converter-for-class>java.lang.String</converter-for-class>
    <converter-class>com.example.converters.StringTrimmer</converter-class>
</converter>