【问题标题】:Can we map char[] to VARCHAR in Hibernate entity?我们可以将 char[] 映射到 Hibernate 实体中的 VARCHAR 吗?
【发布时间】:2021-04-08 04:06:10
【问题描述】:

我们不想将密码存储在 Hibernate 实体类的 String 变量中,而是希望将其存储在 char[] 数组中,以便在使用后清空数组。因此,我们正在减少堆检查的机会。

需要你的建议。

DB 列中的密码字段 - VARCHAR

Java-Hibernate 实体中的密码字段 - String(当前 s/m)

我们可以在 Java-Hiberante 实体中使用 Char[] 代替 String 吗?

【问题讨论】:

  • 这是用户的登录密码吗?
  • 所以您不想暂时将密码保存在String 中……但您很乐意将其(明文)存储在数据库表中?
  • 我们利用 oracle 功能对数据库中的密码进行加密。密码在数据库中是安全的,当我们尝试从数据库中获取/存储密码时,我们不想在 java 应用程序中使用字符串变量。
  • 不,不是用户登录密码。
  • 如果不是登录密码,for的密码是多少? (这实际上与您的问题有关。)

标签: java hibernate hibernate-mapping java-security chararray


【解决方案1】:

Hibernate 将Stringchar[] 映射到VARCHAR,因为它们是基本数据类型。有关更多详细信息,请参阅文档Hibernate-provided BasicTypes

表 3.1。标准基本类型

Hibernate 类型(org.hibernate.type 包) JDBC 类型 Java 类型 BasicTypeRegistry 键 StringType VARCHAR java.lang.String 字符串、java.lang.String MaterializedClob CLOB java.lang.String materialized_clob TextType LONGVARCHAR java.lang.String 文本 CharacterType CHAR char、java.lang.Character char、java.lang.Character BooleanType BIT 布尔值、java.lang.Boolean 布尔值、java.lang.Boolean NumericBooleanType INTEGER,0 为假,1 为真 boolean,java.lang.Boolean numeric_boolean YesNoType CHAR,'N'/'n' 为假,'Y'/'y' 为真。大写值被写入数据库。布尔值,java.lang.Boolean yes_no TrueFalseType CHAR,'F'/'f' 为假,'T'/'t' 为真。大写值被写入数据库。布尔值,java.lang.Boolean true_false ByteType TINYINT 字节,java.lang.Byte 字节,java.lang.Byte ShortType SMALLINT 短,java.lang.Short 短,java.lang.Short IntegerTypes INTEGER int、java.lang.Integer int、java.lang.Integer LongType BIGINT long, java.lang.Long long, java.lang.Long FloatType FLOAT 浮点数、java.lang.Float 浮点数、java.lang.Float DoubleType DOUBLE double、java.lang.Double double、java.lang.Double BigIntegerType NUMERIC java.math.BigInteger big_integer, java.math.BigInteger BigDecimalType NUMERIC java.math.BigDecimal big_decimal, java.math.bigDecimal TimestampType TIMESTAMP java.sql.Timestamp 时间戳,java.sql.Timestamp TimeType TIME java.sql.Time 时间,java.sql.Time DateType DATE java.sql.Date 日期,java.sql.Date CalendarType TIMESTAMP java.util.Calendar 日历,java.util.Calendar CalendarDateType DATE java.util.Calendar calendar_date CurrencyType java.util.Currency VARCHAR 货币,java.util.Currency LocaleType VARCHAR java.util.Locale 语言环境,java.utility.locale TimeZoneType VARCHAR,使用时区 ID java.util.TimeZone 时区,java.util.TimeZone UrlType VARCHAR java.net.URL url, java.net.URL ClassType VARCHAR(FQN 类) java.lang.Class 类,java.lang.Class BlobType BLOB java.sql.Blob 博客,java.sql.Blob ClobType CLOB java.sql.Clob clob, java.sql.Clob BinaryType VARBINARY byte[] 二进制,byte[] MaterializedBlobType BLOB byte[] materized_blob ImageType LONGVARBINARY byte[] 图像 WrapperBinaryType VARBINARY java.lang.Byte[] wrapper-binary, Byte[], java.lang.Byte[] CharArrayType VARCHAR char[] 个字符,char[] CharacterArrayType VARCHAR java.lang.Character[] 包装字符,Character[],java.lang.Character[] UUIDBinaryType BINARY java.util.UUID uuid-binary, java.util.UUID UUIDCharType CHAR,也可以读取VARCHAR java.util.UUID uuid-char PostgresUUIDType PostgreSQL UUID,通过 Types#OTHER,符合 PostgreSQL JDBC 驱动程序定义 java.util.UUID pg-uuid SerializableType VARBINARY java.lang.Serializable 的实现者 与其他值类型不同,注册了该类型的多个实例。它在 java.io.Serializable 下注册一次,并在特定的 java.io.Serializable 实现类名下注册。 StringNVarcharType NVARCHAR java.lang.String nstring NTextType LONGNVARCHAR java.lang.String ntext NClobType NCLOB java.sql.NClob nclob, java.sql.NClob MaterializedNClobType NCLOB java.lang.String materialized_nclob PrimitiveCharacterArrayNClobType NCHAR char[] N/A CharacterNCharType NCHAR java.lang.Character ncharacter CharacterArrayNClobType NCLOB java.lang.Character[] N/A

【讨论】:

  • 太棒了,让我试试 char[]
猜你喜欢
  • 2020-01-28
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 2014-08-14
  • 1970-01-01
相关资源
最近更新 更多