Yes, you should initialize connection in open() method, because constructor is only called in client side (where may can't connect to your database).
Besides, after construction, the RichSinkFunction instance will be serialized into binary and ship to server (TaskManagers) for deserialization and execution.
However, connection instances are mostly not serializable (e.g. jdbc connection). So you can't and shouldn't initialize it in constructor. open() is the suggested way to do that.