Looser coupling with type classes

So far, we have been reading and writing simple types to the database. Let's imagine that we want to add a gender column to our database. We will store the gender as an enumeration in our physicists database. Our table is now as follows:

mysql> CREATE TABLE physicists (
        id INT(11) AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(32) NOT NULL,
        gender ENUM("Female", "Male") NOT NULL
);

How can we represent genders in Scala? A good way of doing this is with an enumeration:

// Gender.scala

object Gender extends Enumeration {
  val Male = Value
  val Female = Value
}

However, we now have a problem when deserializing objects from the database: JDBC has no built-in mechanism to convert from a SQL ENUM type to a Scala Gender type. ...

Get Scala:Applied Machine Learning now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.